modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
| 161 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/DampeningAlertDefinitionForm.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/RecoveryAlertDefinitionForm.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
| 25 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/TemplateAlertDefinitionsView.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
| 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java
| 138 +++++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
| 7
12 files changed, 225 insertions(+), 154 deletions(-)
New commits:
commit 033c156cbba2e6799271dc4688e52c023d2c709f
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Aug 27 18:26:35 2010 -0400
refactor TableSection to allow for records to be used to build detail views
refactor the alert def code to use the new TableSection
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
index 21565e1..4c7b047 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
@@ -18,17 +18,22 @@
*/
package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+import com.google.gwt.user.client.History;
+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.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
-import com.smartgwt.client.widgets.grid.events.SelectionEvent;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.AlertPriority;
+import org.rhq.core.domain.alert.BooleanExpression;
+import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
+import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
-import org.rhq.enterprise.gui.coregui.client.components.table.Table.SelectionEnablement;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
/**
* Superclass to the different alert definition views. This should be subclassed
@@ -36,49 +41,31 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*
* @author John Mazzitelli
*/
-public abstract class AbstractAlertDefinitionsView extends LocatableVLayout {
+public abstract class AbstractAlertDefinitionsView extends TableSection {
- private SingleAlertDefinitionView singleAlertDefinitionView;
- private Table alertDefinitionsTable;
-
- public AbstractAlertDefinitionsView(String locatorId) {
- super(locatorId);
- setWidth100();
- setHeight100();
- setMembersMargin(10);
+ public AbstractAlertDefinitionsView(String locatorId, String tableTitle) {
+ super(locatorId, tableTitle);
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void configureTable() {
+
+ ListGrid listGrid = getListGrid();
+
+ AbstractAlertDefinitionsDataSource ds = getAlertDefinitionDataSource();
+ setDataSource(ds);
+ listGrid.setDataSource(ds);
Criteria criteria = getCriteria();
- alertDefinitionsTable = new Table(extendLocatorId("AlertDef"),
getTableTitle(), criteria);
- alertDefinitionsTable.setDataSource(getAlertDefinitionDataSource());
- alertDefinitionsTable.getListGrid().setUseAllDataSourceFields(true);
-
- alertDefinitionsTable.getListGrid().addSelectionChangedHandler(new
SelectionChangedHandler() {
- public void onSelectionChanged(SelectionEvent selectionEvent) {
- AlertDefinition alertDef = null;
- ListGridRecord selectedRecord = null;
- ListGridRecord[] allSelections = selectionEvent.getSelection();
- if (allSelections != null && allSelections.length == 1) {
- selectedRecord = allSelections[0];
- }
- if (selectedRecord != null) {
- alertDef = ((AbstractAlertDefinitionsDataSource)
alertDefinitionsTable.getDataSource())
- .copyValues(selectedRecord);
- showSingleAlertDefinitionView(alertDef);
- } else {
- hideSingleAlertDefinitionView();
- }
- markForRedraw();
- }
- });
+ listGrid.setCriteria(criteria);
+ listGrid.setUseAllDataSourceFields(true);
+ listGrid.setWrapCells(true);
+ listGrid.setFixedRecordHeights(false);
+ //listGrid.getField("id").setWidth(55);
- boolean permitted = isAllowedToModifyAlerts();
+ boolean permitted = isAllowedToModifyAlertDefinitions();
- alertDefinitionsTable.addTableAction(extendLocatorId("New"),
"New", (permitted) ? SelectionEnablement.ALWAYS
+ addTableAction(extendLocatorId("New"), "New", (permitted) ?
SelectionEnablement.ALWAYS
: SelectionEnablement.NEVER, null, new TableAction() {
public void executeAction(ListGridRecord[] selection) {
newButtonPressed(selection);
@@ -86,7 +73,7 @@ public abstract class AbstractAlertDefinitionsView extends
LocatableVLayout {
}
});
- alertDefinitionsTable.addTableAction(extendLocatorId("Enable"),
"Enable", (permitted) ? SelectionEnablement.ANY
+ addTableAction(extendLocatorId("Enable"), "Enable",
(permitted) ? SelectionEnablement.ANY
: SelectionEnablement.NEVER, "Are You Sure?", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
enableButtonPressed(selection);
@@ -94,62 +81,86 @@ public abstract class AbstractAlertDefinitionsView extends
LocatableVLayout {
}
});
- alertDefinitionsTable.addTableAction(extendLocatorId("Disable"),
"Disable",
- (permitted) ? SelectionEnablement.ANY : SelectionEnablement.NEVER, "Are
You Sure?", new TableAction() {
- public void executeAction(ListGridRecord[] selection) {
- disableButtonPressed(selection);
- CoreGUI.refresh();
- }
- });
+ addTableAction(extendLocatorId("Disable"), "Disable",
(permitted) ? SelectionEnablement.ANY
+ : SelectionEnablement.NEVER, "Are You Sure?", new TableAction() {
+ public void executeAction(ListGridRecord[] selection) {
+ disableButtonPressed(selection);
+ CoreGUI.refresh();
+ }
+ });
- alertDefinitionsTable.addTableAction(extendLocatorId("Delete"),
"Delete", (permitted) ? SelectionEnablement.ANY
+ addTableAction(extendLocatorId("Delete"), "Delete",
(permitted) ? SelectionEnablement.ANY
: SelectionEnablement.NEVER, "Are You Sure?", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
deleteButtonPressed(selection);
CoreGUI.refresh();
}
});
+ }
- addMember(alertDefinitionsTable);
+ @Override
+ public void showDetails(ListGridRecord record) {
+ Canvas canvas = getDetailsView(record);
+ setDetailsView(canvas);
- singleAlertDefinitionView = buildSingleAlertDefinitionView();
- singleAlertDefinitionView.hide();
- singleAlertDefinitionView.setWidth100();
- singleAlertDefinitionView.setHeight100();
- singleAlertDefinitionView.setMargin(10);
- addMember(singleAlertDefinitionView);
- }
+ Integer id = record.getAttributeAsInt("id");
+ History.newItem(getBasePath() + "/" + id.intValue(), false);
- protected SingleAlertDefinitionView getSingleAlertDefinitionView() {
- return singleAlertDefinitionView;
+ switchToDetailsView();
}
- protected void showSingleAlertDefinitionView(AlertDefinition alertDef) {
- alertDefinitionsTable.setHeight("33%");
- alertDefinitionsTable.setShowResizeBar(true);
- singleAlertDefinitionView.setHeight("67%");
- singleAlertDefinitionView.show();
- singleAlertDefinitionView.setAlertDefinition(alertDef);
- }
+ @Override
+ public Canvas getDetailsView(ListGridRecord record) {
+ if (record == null) {
+ return getDetailsView(0);
+ }
- protected void hideSingleAlertDefinitionView() {
- alertDefinitionsTable.setHeight100();
- alertDefinitionsTable.setShowResizeBar(false);
- singleAlertDefinitionView.hide();
+ AlertDefinition alertDef = getAlertDefinitionDataSource().copyValues(record);
+ SingleAlertDefinitionView singleAlertDefinitionView = new
SingleAlertDefinitionView(alertDef);
+ return singleAlertDefinitionView;
}
- protected SingleAlertDefinitionView buildSingleAlertDefinitionView() {
- SingleAlertDefinitionView singleAlertDefinitionView = new
SingleAlertDefinitionView();
+ @Override
+ public SingleAlertDefinitionView getDetailsView(int id) {
+ final SingleAlertDefinitionView singleAlertDefinitionView = new
SingleAlertDefinitionView();
+
+ if (id == 0) {
+ // create an empty one with all defaults
+ AlertDefinition newAlertDef = new AlertDefinition();
+ newAlertDef.setDeleted(false);
+ newAlertDef.setEnabled(true);
+ newAlertDef.setNotifyFiltered(false);
+ newAlertDef.setParentId(Integer.valueOf(0));
+ newAlertDef.setConditionExpression(BooleanExpression.ALL);
+ newAlertDef.setPriority(AlertPriority.MEDIUM);
+ newAlertDef.setWillRecover(false);
+ singleAlertDefinitionView.makeEditable();
+ } else {
+ final AlertDefinitionCriteria criteria = new AlertDefinitionCriteria();
+ criteria.addFilterId(id);
+ criteria.fetchGroupAlertDefinition(true);
+ GWTServiceLookup.getAlertService().findAlertDefinitionsByCriteria(criteria,
+ new AsyncCallback<PageList<AlertDefinition>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to load alert
definition data", caught);
+ }
+
+ public void onSuccess(PageList<AlertDefinition> result) {
+ if (result.size() > 0) {
+ singleAlertDefinitionView.setAlertDefinition(result.get(0));
+ }
+ }
+ });
+ }
+
return singleAlertDefinitionView;
}
- protected abstract String getTableTitle();
-
protected abstract Criteria getCriteria();
protected abstract AbstractAlertDefinitionsDataSource
getAlertDefinitionDataSource();
- protected abstract boolean isAllowedToModifyAlerts();
+ protected abstract boolean isAllowedToModifyAlertDefinitions();
protected abstract void newButtonPressed(ListGridRecord[] selection);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
index 8be60bb..477dc0d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
@@ -54,8 +54,8 @@ public class ConditionsAlertDefinitionForm extends DynamicForm
implements EditAl
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void onInit() {
+ super.onInit();
if (!formBuilt) {
buildForm();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/DampeningAlertDefinitionForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/DampeningAlertDefinitionForm.java
index 1da8f49..4dc7356 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/DampeningAlertDefinitionForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/DampeningAlertDefinitionForm.java
@@ -45,8 +45,8 @@ public class DampeningAlertDefinitionForm extends DynamicForm implements
EditAle
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void onInit() {
+ super.onInit();
if (!formBuilt) {
buildForm();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
index 3b46437..e7d8d0a 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
@@ -65,8 +65,8 @@ public class GeneralPropertiesAlertDefinitionForm extends DynamicForm
implements
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void onInit() {
+ super.onInit();
if (!formBuilt) {
buildForm();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java
index 491baee..c0b37ca 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java
@@ -39,7 +39,7 @@ public class GroupAlertDefinitionsView extends
AbstractAlertDefinitionsView {
private ResourceGroup group;
public GroupAlertDefinitionsView(String locatorId, ResourceGroup group) {
- super(locatorId);
+ super(locatorId, "Group Alert Definitions");
this.group = group;
}
@@ -56,12 +56,7 @@ public class GroupAlertDefinitionsView extends
AbstractAlertDefinitionsView {
}
@Override
- protected String getTableTitle() {
- return "Group Alert Definitions";
- }
-
- @Override
- protected boolean isAllowedToModifyAlerts() {
+ protected boolean isAllowedToModifyAlertDefinitions() {
// TODO: see if user can modify group alerts on this group
return true;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
index d0fddc6..644ba4c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
@@ -45,8 +45,8 @@ public class NotificationsAlertDefinitionForm extends DynamicForm
implements Edi
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void onInit() {
+ super.onInit();
if (!formBuilt) {
buildForm();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/RecoveryAlertDefinitionForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/RecoveryAlertDefinitionForm.java
index 637c2cc..e3d6bcc 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/RecoveryAlertDefinitionForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/RecoveryAlertDefinitionForm.java
@@ -50,8 +50,8 @@ public class RecoveryAlertDefinitionForm extends DynamicForm implements
EditAler
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void onInit() {
+ super.onInit();
if (!formBuilt) {
buildForm();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
index acc88c2..126c672 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
@@ -27,9 +27,6 @@ import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.grid.ListGridRecord;
-import org.rhq.core.domain.alert.AlertDefinition;
-import org.rhq.core.domain.alert.AlertPriority;
-import org.rhq.core.domain.alert.BooleanExpression;
import org.rhq.core.domain.resource.Resource;
/**
@@ -42,7 +39,7 @@ public class ResourceAlertDefinitionsView extends
AbstractAlertDefinitionsView {
private Resource resource;
public ResourceAlertDefinitionsView(String locatorId, Resource resource) {
- super(locatorId);
+ super(locatorId, "Alert Definitions");
this.resource = resource;
}
@@ -59,30 +56,14 @@ public class ResourceAlertDefinitionsView extends
AbstractAlertDefinitionsView {
}
@Override
- protected String getTableTitle() {
- return "Alert Definitions";
- }
-
- @Override
- protected boolean isAllowedToModifyAlerts() {
+ protected boolean isAllowedToModifyAlertDefinitions() {
// TODO: see if user can modify alerts on this resource
return true;
}
@Override
protected void newButtonPressed(ListGridRecord[] selection) {
- // create an empty one with all defaults
- AlertDefinition newAlertDef = new AlertDefinition();
- newAlertDef.setDeleted(false);
- newAlertDef.setEnabled(true);
- newAlertDef.setNotifyFiltered(false);
- newAlertDef.setParentId(Integer.valueOf(0));
- newAlertDef.setConditionExpression(BooleanExpression.ALL);
- newAlertDef.setPriority(AlertPriority.MEDIUM);
- newAlertDef.setWillRecover(false);
-
- showSingleAlertDefinitionView(newAlertDef);
- getSingleAlertDefinitionView().makeEditable();
+ showDetails(0);
}
@Override
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/TemplateAlertDefinitionsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/TemplateAlertDefinitionsView.java
index 4e0ca75..d2f44f6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/TemplateAlertDefinitionsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/TemplateAlertDefinitionsView.java
@@ -39,7 +39,7 @@ public class TemplateAlertDefinitionsView extends
AbstractAlertDefinitionsView {
private ResourceType resourceType;
public TemplateAlertDefinitionsView(String locatorId, ResourceType resourceType) {
- super(locatorId);
+ super(locatorId, "Alert Templates");
this.resourceType = resourceType;
}
@@ -56,12 +56,7 @@ public class TemplateAlertDefinitionsView extends
AbstractAlertDefinitionsView {
}
@Override
- protected String getTableTitle() {
- return "Alert Templates";
- }
-
- @Override
- protected boolean isAllowedToModifyAlerts() {
+ protected boolean isAllowedToModifyAlertDefinitions() {
// TODO: see if user can modify template alerts
return true;
}
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 b167872..8404cd5 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
@@ -58,7 +58,7 @@ public class Table extends LocatableHLayout {
private static final SelectionEnablement DEFAULT_SELECTION_ENABLEMENT =
SelectionEnablement.ALWAYS;
- protected VLayout contents;
+ private VLayout contents;
private HTMLFlow title;
@@ -329,6 +329,14 @@ public class Table extends LocatableHLayout {
}
+ /**
+ * Returns the encompassing canvas that contains all content for this table
component.
+ * This content includes the list grid, the buttons, etc.
+ */
+ public Canvas getTableContents() {
+ return this.contents;
+ }
+
public boolean isShowHeader() {
return showHeader;
}
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 78988c5..a25d7e6 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
@@ -28,23 +28,24 @@ 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.ListGridRecord;
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.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
import org.rhq.enterprise.gui.coregui.client.components.buttons.BackButton;
/**
* @author Greg Hinkle
+ * @author John Mazzitelli
*/
public abstract class TableSection extends Table implements BookmarkableView {
private VLayout detailsHolder;
-
private Canvas detailsView;
-
private String basePath;
protected TableSection(String locatorId, String tableTitle) {
@@ -83,29 +84,88 @@ public abstract class TableSection extends Table implements
BookmarkableView {
detailsHolder.hide();
addMember(detailsHolder);
-
}
@Override
protected void onDraw() {
super.onDraw();
-
getListGrid().addCellDoubleClickHandler(new CellDoubleClickHandler() {
@Override
public void onCellDoubleClick(CellDoubleClickEvent event) {
-
- int id = event.getRecord().getAttributeAsInt("id");
-
- showDetails(id);
+ showDetails(event.getRecord());
}
});
+ }
+
+ /**
+ * Shows the details view for the given record of the table.
+ *
+ * The default implementation of this method assumes there is an
+ * id attribute on the record and passes it to {@link #showDetails(int)}.
+ * Subclasses are free to override this behavior. Subclasses usually
+ * will need to set the {@link #setDetailsView(Canvas) details view}
+ * explicitly.
+ *
+ * @param record the record whose details are to be shown
+ */
+ public void showDetails(ListGridRecord record) {
+ Integer id = record.getAttributeAsInt("id");
+ if (id != null) {
+ showDetails(id.intValue());
+ } else {
+ String msg = "table [" + this.getClass() + "] is missing
'id' attrib! please report this bug";
+ CoreGUI.getErrorHandler().handleError(msg);
+ throw new IllegalArgumentException(msg);
+ }
+ }
+ /**
+ * Returns the details canvas with information on the item given its list grid
record.
+ *
+ * The default implementation of this method is to assume there is an
+ * id attribute on the record and pass that ID to {@link #getDetailsView(int)}.
+ * Subclasses are free to override this - which you usually want to do
+ * if you know the full details of the item are stored in the record attributes
+ * and thus help avoid making a round trip to the DB.
+ *
+ * @param record the record of the item whose details to be shown; ; null if empty
details view should be shown.
+ */
+ public Canvas getDetailsView(ListGridRecord record) {
+ if (record == null) {
+ return getDetailsView(0);
+ }
+
+ Integer id = record.getAttributeAsInt("id");
+ if (id != null) {
+ return getDetailsView(id.intValue());
+ } else {
+ String msg = "table [" + this.getClass() + "] is missing
'id' attrib. please report this bug";
+ CoreGUI.getErrorHandler().handleError(msg);
+ throw new IllegalArgumentException(msg);
+ }
}
+ /**
+ * Shows the details for an item has the given ID. Note that an empty
+ * details view will be shown if the id passed in is 0.
+ * This method is usually called when a user goes to the details
+ * page via a bookmark or direct link.
+ *
+ * @param id the id of the row whose details are to be shown; pass in 0 to show empty
details
+ *
+ * @see #showDetails(ListGridRecord)
+ */
public void showDetails(int id) {
History.newItem(basePath + "/" + id);
}
+ /**
+ * Returns the details canvas with information on the item that has the given ID.
+ * Note that an empty details view should be returned if the id passed in is 0 (as
would
+ * be the case if a new item is to be created using the details view).
+ *
+ * @param id the id of the details to be shown; will be 0 if an empty details view
should be shown.
+ */
public abstract Canvas getDetailsView(int id);
@Override
@@ -114,16 +174,39 @@ public abstract class TableSection extends Table implements
BookmarkableView {
basePath = viewPath.getPathToCurrent();
if (!viewPath.isEnd()) {
-
int id = Integer.parseInt(viewPath.getCurrent().getPath());
-
detailsView = getDetailsView(id);
-
if (detailsView instanceof BookmarkableView) {
-
((BookmarkableView) detailsView).renderView(viewPath);
}
+ switchToDetailsView();
+ } else {
+ switchToTableView();
+ }
+ }
+
+ protected String getBasePath() {
+ return this.basePath;
+ }
+
+ /**
+ * For use by subclasses that want to define their own details view.
+ *
+ * @param detailsView the new details view
+ */
+ protected void setDetailsView(Canvas detailsView) {
+ this.detailsView = detailsView;
+ }
+
+ /**
+ * Switches to viewing the details canvas, hiding the table. This does not
+ * do anything with reloading data or switching to the selected row in the table;
+ * this only changes the visibility of canvases.
+ */
+ protected void switchToDetailsView() {
+ Canvas contents = getTableContents();
+ if (contents != null) {
contents.animateHide(AnimationEffect.FADE, new AnimationCallback() {
@Override
public void execute(boolean b) {
@@ -135,22 +218,27 @@ public abstract class TableSection extends Table implements
BookmarkableView {
detailsHolder.animateShow(AnimationEffect.FADE);
}
});
+ }
+ }
- } else {
- 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);
- }
+ /**
+ * Switches to viewing the table, hiding the details canvas.
+ */
+ protected void switchToTableView() {
+ Canvas contents = getTableContents();
+ 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);
}
}
- });
- }
+ }
+ });
}
}
}
commit 8923b7f0c47e91528507b90198e3e6d926dc46a3
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Aug 27 18:16:08 2010 -0400
error handler should not store errors in an unbounded list - they aren't even
used
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
index 9491b8f..d410c54 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
@@ -18,8 +18,6 @@
*/
package org.rhq.enterprise.gui.coregui.client.util;
-import java.util.ArrayList;
-
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -28,8 +26,6 @@ import org.rhq.enterprise.gui.coregui.client.util.message.Message;
*/
public class ErrorHandler {
- private ArrayList<String> errors = new ArrayList<String>();
-
public void handleError(String message) {
handleError(message, null);
}
@@ -41,8 +37,5 @@ public class ErrorHandler {
if (t != null) {
t.printStackTrace();
}
-
- this.errors.add(message);
}
-
}