modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java | 27 +++-- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java | 43 +++++++- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java | 1 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java | 52 +++++----- 4 files changed, 83 insertions(+), 40 deletions(-)
New commits: commit b10d84bf08e986ade3786ef53bcea64c94c11468 Author: John Mazzitelli mazz@redhat.com Date: Thu Sep 9 13:44:52 2010 -0400
more incremental coding for the conditions editor of alert def editor
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java index f19d967..c4e1844 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java @@ -23,24 +23,27 @@
package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+import java.util.HashSet; import java.util.LinkedHashMap;
-import com.smartgwt.client.widgets.form.fields.CanvasItem; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+import org.rhq.core.domain.alert.AlertCondition; import org.rhq.core.domain.alert.AlertDefinition; import org.rhq.core.domain.alert.BooleanExpression; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; +import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/** * @author John Mazzitelli */ -public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implements EditAlertDefinitionForm { +public class ConditionsAlertDefinitionForm extends LocatableVLayout implements EditAlertDefinitionForm {
private AlertDefinition alertDefinition;
private SelectItem conditionExpression; + private ConditionsEditor conditionsEditor;
private StaticTextItem conditionExpressionStatic;
@@ -81,6 +84,7 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen clearFormValues(); } else { conditionExpression.setValue(alertDef.getConditionExpression().name()); + conditionsEditor.setConditions(alertDef.getConditions()); conditionExpressionStatic.setValue(alertDef.getConditionExpression().toString()); }
@@ -90,6 +94,7 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen @Override public void makeEditable() { conditionExpression.show(); + conditionsEditor.setEditable(true); conditionExpressionStatic.hide();
markForRedraw(); @@ -98,6 +103,7 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen @Override public void makeViewOnly() { conditionExpression.hide(); + conditionsEditor.setEditable(false); conditionExpressionStatic.show();
markForRedraw(); @@ -107,11 +113,15 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen public void saveAlertDefinition() { String condExpr = conditionExpression.getValue().toString(); alertDefinition.setConditionExpression(BooleanExpression.valueOf(condExpr)); + + HashSet<AlertCondition> conditions = conditionsEditor.getConditions(); + alertDefinition.setConditions(conditions); }
@Override public void clearFormValues() { conditionExpression.clearValue(); + conditionsEditor.setConditions(null);
conditionExpressionStatic.clearValue();
@@ -121,6 +131,8 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen private void buildForm() { if (!formBuilt) {
+ LocatableDynamicForm conditionExpressionForm; + conditionExpressionForm = new LocatableDynamicForm(this.extendLocatorId("conditionExpressionForm")); conditionExpression = new SelectItem("conditionExpression", "Fire alert when"); LinkedHashMap<String, String> condExprs = new LinkedHashMap<String, String>(2); condExprs.put(BooleanExpression.ALL.name(), BooleanExpression.ALL.toString()); @@ -128,16 +140,11 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen conditionExpression.setValueMap(condExprs); conditionExpression.setDefaultValue(BooleanExpression.ALL.name()); conditionExpressionStatic = new StaticTextItem("conditionExpressionStatic", "Fire alert when"); + conditionExpressionForm.setFields(conditionExpression, conditionExpressionStatic);
- ConditionsEditor conditionsEditor = new ConditionsEditor(this.extendLocatorId("conditionsEditor"), this); - - CanvasItem canvasItem = new CanvasItem("conditionsEditorCanvasItem"); - canvasItem.setCanvas(conditionsEditor); - canvasItem.setShowTitle(false); - canvasItem.setColSpan(2); - - setFields(conditionExpression, conditionExpressionStatic, canvasItem); + conditionsEditor = new ConditionsEditor(this.extendLocatorId("conditionsEditor"), null);
+ setMembers(conditionExpressionForm, conditionsEditor); formBuilt = true; } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java index ddc3545..ecd93d0 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java @@ -23,9 +23,13 @@
package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+import java.util.HashSet; +import java.util.Set; + import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.data.fields.DataSourceTextField; +import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.alert.AlertCondition; @@ -41,12 +45,32 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout; */ public class ConditionsEditor extends LocatableVLayout {
- private final ConditionsAlertDefinitionForm form; + private HashSet<AlertCondition> conditions; private Table table;
- public ConditionsEditor(String locatorId, ConditionsAlertDefinitionForm form) { + public ConditionsEditor(String locatorId, HashSet<AlertCondition> conditions) { super(locatorId); - this.form = form; + setConditions(conditions); + } + + /** + * Returns the conditions that this editor currently has in memory. + * This will never be <code>null</code>. + * + * @return conditions set that was possibly edited by the user + */ + public HashSet<AlertCondition> getConditions() { + return conditions; + } + + public void setConditions(Set<AlertCondition> set) { + conditions = new HashSet<AlertCondition>(); // make our own copy + if (set != null) { + conditions.addAll(set); + } + if (table != null) { + table.refresh(); + } }
@Override @@ -55,19 +79,26 @@ public class ConditionsEditor extends LocatableVLayout {
table = new Table("conditionsTable"); table.setShowHeader(false); - table.setDataSource(new ConditionDataSource()); + + final ConditionDataSource dataSource = new ConditionDataSource(); + table.setDataSource(dataSource);
table.addTableAction(this.extendLocatorId("add"), "Add", SelectionEnablement.ALWAYS, null, new TableAction() { @Override public void executeAction(ListGridRecord[] selection) { // TODO Auto-generated method stub + SC.say("Not implemented yet"); } }); table.addTableAction(this.extendLocatorId("delete"), "Delete", SelectionEnablement.ANY, "Are you sure?", new TableAction() { @Override public void executeAction(ListGridRecord[] selection) { - // TODO Auto-generated method stub + for (ListGridRecord record : selection) { + AlertCondition cond = dataSource.copyValues(record); + conditions.remove(cond); + } + table.refresh(); } });
@@ -102,7 +133,7 @@ public class ConditionsEditor extends LocatableVLayout {
@Override protected void executeFetch(DSRequest request, DSResponse response) { - response.setData(buildRecords(ConditionsEditor.this.form.getAlertDefinition().getConditions())); + response.setData(buildRecords(conditions)); processResponse(request.getRequestId(), response); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java index 05e6c18..d06e422 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java @@ -121,6 +121,7 @@ public class SingleAlertDefinitionView extends LocatableVLayout { cancelButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { + setAlertDefinition(getAlertDefinition()); // reverts data back to original makeViewOnly(); } });
commit 0074e60a201b6d8796f2cea440d4df3b32003c9a Author: John Mazzitelli mazz@redhat.com Date: Thu Sep 9 13:44:00 2010 -0400
avoid NPE. this can occur if calling the set-disable-override method before the table is drawn
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java index d12a864..abae48f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java @@ -501,39 +501,43 @@ public class Table extends LocatableHLayout { if (showFooter) { int count = this.listGrid.getSelection().length; for (TableActionInfo tableAction : tableActions) { - boolean enabled; - if (!this.tableActionDisableOverride) { - switch (tableAction.enablement) { - case ALWAYS: - enabled = true; - break; - case NEVER: + if (tableAction.actionButton != null) { // if null, we haven't initialized our buttons yet, so skip this + boolean enabled; + if (!this.tableActionDisableOverride) { + switch (tableAction.enablement) { + case ALWAYS: + enabled = true; + break; + case NEVER: + enabled = false; + break; + case ANY: + enabled = (count >= 1); + break; + case SINGLE: + enabled = (count == 1); + break; + case MULTIPLE: + enabled = (count > 1); + break; + default: + throw new IllegalStateException("Unhandled SelectionEnablement: " + + tableAction.enablement.name()); + } + } else { enabled = false; - break; - case ANY: - enabled = (count >= 1); - break; - case SINGLE: - enabled = (count == 1); - break; - case MULTIPLE: - enabled = (count > 1); - break; - default: - throw new IllegalStateException("Unhandled SelectionEnablement: " - + tableAction.enablement.name()); } - } else { - enabled = false; + tableAction.actionButton.setDisabled(!enabled); } - tableAction.actionButton.setDisabled(!enabled); } for (Canvas extraWidget : extraWidgets) { if (extraWidget instanceof TableWidget) { ((TableWidget) extraWidget).refresh(this.listGrid); } } - this.tableInfo.setContents("Total: " + listGrid.getTotalRows() + " (" + count + " selected)"); + if (this.tableInfo != null) { + this.tableInfo.setContents("Total: " + listGrid.getTotalRows() + " (" + count + " selected)"); + } } }
rhq-commits@lists.fedorahosted.org