modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java | 60 +-- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/ScheduleTableCollectionWidget.java | 179 ---------- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/SchedulesDataSource.java | 9 3 files changed, 24 insertions(+), 224 deletions(-)
New commits: commit b51438adadf70d67751369759ab50586ffdad3b3 Author: Mike Thompson mithomps@redhat.com Date: Thu Apr 26 12:51:01 2012 -0700
Revert "[BZ 805545] Improved the usability of the Resource Metric Collection Schedule table."
This reverts commit a0f5661578404b47511e05145e1648eeffc30cdb.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java index a5d932a..f5e4dbb 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java @@ -18,25 +18,20 @@ */ package org.rhq.enterprise.gui.coregui.client.inventory.common;
+import java.util.ArrayList; +import java.util.List; + import com.smartgwt.client.data.SortSpecifier; -import com.smartgwt.client.types.ListGridEditEvent; -import com.smartgwt.client.types.RowEndEditAction; import com.smartgwt.client.types.SortDirection; -import com.smartgwt.client.widgets.form.fields.CheckboxItem; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; + import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.criteria.MeasurementScheduleCriteria; -import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem; -import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit; 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.gwt.MeasurementDataGWTServiceAsync; -import org.rhq.enterprise.gui.coregui.client.util.Log; - -import java.util.ArrayList; -import java.util.List; -import java.util.TreeSet;
/** * A view that displays a non-paginated table of {@link org.rhq.core.domain.measurement.MeasurementSchedule measurement @@ -79,50 +74,32 @@ public abstract class AbstractSchedulesView extends Table<SchedulesDataSource> { protected void configureTable() { ArrayList<ListGridField> listGridFields = getDataSource().getListGridFields(); getListGrid().setFields(listGridFields.toArray(new ListGridField[listGridFields.size()])); - getListGrid().setCanEdit(true); - getListGrid().setModalEditing(true); - //getListGrid().setEditByCell(true); - getListGrid().setEditEvent(ListGridEditEvent.CLICK); - getListGrid().setAutoSaveEdits(false); - getListGrid().setListEndEditAction(RowEndEditAction.DONE); - setupTableInteractions(this.hasWriteAccess); + super.configureTable(); - } + }
protected void setupTableInteractions(final boolean hasWriteAccess) {
- ListGridField enabledField = getListGrid().getField(SchedulesDataSource.ATTR_ENABLED); - CheckboxItem enabledCheckboxItem = new CheckboxItem(); - enabledCheckboxItem.addChangeHandler(new com.smartgwt.client.widgets.form.fields.events.ChangeHandler() { - @Override - public void onChange(com.smartgwt.client.widgets.form.fields.events.ChangeEvent event) { - boolean enabled = Boolean.valueOf(event.getItem().getValue() + ""); - Log.debug("Enabled/Disable Measurement: "+event.getItem().getFieldName()+ Boolean.valueOf(event.getItem().getValue() + "")); - - ListGridRecord[] records = getListGrid().getSelectedRecords(); - Log.debug(" * Number of Records selected: "+records.length); - Log.debug(" * Number of Records selected: "+records[0].getAttributeAsString(SchedulesDataSource.ATTR_DISPLAY_NAME)); - if(!enabled){ - enableSchedules(); - }else { - disableSchedules(); - } + addTableAction(extendLocatorId("Enable"), MSG.common_button_enable(), null, new TableAction() { + public boolean isEnabled(ListGridRecord[] selection) { + return ((selection.length >= 1) && hasWriteAccess); } - }); - enabledField.setEditorType(enabledCheckboxItem);
- ListGridField intervalField = getListGrid().getField(SchedulesDataSource.ATTR_INTERVAL); - - TreeSet<TimeUnit> supportedUnits = new TreeSet<TimeUnit>(); - supportedUnits.add(TimeUnit.SECONDS); - supportedUnits.add(TimeUnit.MINUTES); - supportedUnits.add(TimeUnit.HOURS); - supportedUnits.add(TimeUnit.DAYS); - DurationItem durationItem = new DurationItem("duration","Duration", - TimeUnit.MILLISECONDS, supportedUnits, false, false, this); - intervalField.setEditorType(durationItem); + public void executeAction(ListGridRecord[] selection, Object actionValue) { + enableSchedules(); + } + }); + addTableAction(extendLocatorId("Disable"), MSG.common_button_disable(), null, new TableAction() { + public boolean isEnabled(ListGridRecord[] selection) { + return ((selection.length >= 1) && hasWriteAccess); + }
+ public void executeAction(ListGridRecord[] selection, Object actionValue) { + disableSchedules(); + } + }); + addExtraWidget(new UpdateCollectionIntervalWidget(this.getLocatorId(), this), true); }
protected abstract void enableSchedules(int[] measurementDefinitionIds, diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/SchedulesDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/SchedulesDataSource.java index 92292d1..e73cb66 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/SchedulesDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/SchedulesDataSource.java @@ -18,6 +18,8 @@ */ package org.rhq.enterprise.gui.coregui.client.inventory.common;
+import java.util.ArrayList; + import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; @@ -26,6 +28,7 @@ import com.smartgwt.client.rpc.RPCResponse; import com.smartgwt.client.widgets.grid.CellFormatter; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; + import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.criteria.Criteria; import org.rhq.core.domain.criteria.MeasurementScheduleCriteria; @@ -38,9 +41,6 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.MeasurementDataGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
-import java.util.ArrayList; - - /** * A server-side SmartGWT DataSource for reading and updating {@link MeasurementScheduleComposite}s. * @@ -97,11 +97,8 @@ public class SchedulesDataSource extends RPCDataSource<MeasurementScheduleCompos fields.add(intervalField);
displayNameField.setWidth("20%"); - displayNameField.setCanEdit(false); descriptionField.setWidth("40%"); - descriptionField.setCanEdit(false); typeField.setWidth("10%"); - typeField.setCanEdit(false); enabledField.setWidth("10%"); intervalField.setWidth("*");
commit 3fbbca34d9bb1ad11cf13045ae687ed04d453fe9 Author: Mike Thompson mithomps@redhat.com Date: Thu Apr 26 12:46:18 2012 -0700
Revert "[BZ 805545] Improve the usability of the Resource Metric Collection Schedule table. Make the collection intervals update properly after in-place edit."
This reverts commit a3fcd70ab1ec92d8b258f4c1f928ee32e4f40d2e.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java index 9d029ef..a5d932a 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractSchedulesView.java @@ -23,11 +23,12 @@ import com.smartgwt.client.types.ListGridEditEvent; import com.smartgwt.client.types.RowEndEditAction; import com.smartgwt.client.types.SortDirection; import com.smartgwt.client.widgets.form.fields.CheckboxItem; -import com.smartgwt.client.widgets.form.fields.events.ChangeEvent; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.criteria.MeasurementScheduleCriteria; +import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem; +import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit; import org.rhq.enterprise.gui.coregui.client.components.table.Table; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.MeasurementDataGWTServiceAsync; @@ -35,6 +36,7 @@ import org.rhq.enterprise.gui.coregui.client.util.Log;
import java.util.ArrayList; import java.util.List; +import java.util.TreeSet;
/** * A view that displays a non-paginated table of {@link org.rhq.core.domain.measurement.MeasurementSchedule measurement @@ -79,6 +81,7 @@ public abstract class AbstractSchedulesView extends Table<SchedulesDataSource> { getListGrid().setFields(listGridFields.toArray(new ListGridField[listGridFields.size()])); getListGrid().setCanEdit(true); getListGrid().setModalEditing(true); + //getListGrid().setEditByCell(true); getListGrid().setEditEvent(ListGridEditEvent.CLICK); getListGrid().setAutoSaveEdits(false); getListGrid().setListEndEditAction(RowEndEditAction.DONE); @@ -95,7 +98,11 @@ public abstract class AbstractSchedulesView extends Table<SchedulesDataSource> { @Override public void onChange(com.smartgwt.client.widgets.form.fields.events.ChangeEvent event) { boolean enabled = Boolean.valueOf(event.getItem().getValue() + ""); + Log.debug("Enabled/Disable Measurement: "+event.getItem().getFieldName()+ Boolean.valueOf(event.getItem().getValue() + ""));
+ ListGridRecord[] records = getListGrid().getSelectedRecords(); + Log.debug(" * Number of Records selected: "+records.length); + Log.debug(" * Number of Records selected: "+records[0].getAttributeAsString(SchedulesDataSource.ATTR_DISPLAY_NAME)); if(!enabled){ enableSchedules(); }else { @@ -107,16 +114,14 @@ public abstract class AbstractSchedulesView extends Table<SchedulesDataSource> {
ListGridField intervalField = getListGrid().getField(SchedulesDataSource.ATTR_INTERVAL);
- final ScheduleTableCollectionWidget collectionIntervalWidget = new ScheduleTableCollectionWidget("collectionInterval", this); - - collectionIntervalWidget.addChangeHandler(new com.smartgwt.client.widgets.form.fields.events.ChangeHandler() { - @Override - public void onChange(ChangeEvent event) { - Log.debug(" Collection Interval: "+ collectionIntervalWidget.getValue()); - updateSchedules(collectionIntervalWidget.getInterval()); - } - }); - intervalField.setEditorType(collectionIntervalWidget); + TreeSet<TimeUnit> supportedUnits = new TreeSet<TimeUnit>(); + supportedUnits.add(TimeUnit.SECONDS); + supportedUnits.add(TimeUnit.MINUTES); + supportedUnits.add(TimeUnit.HOURS); + supportedUnits.add(TimeUnit.DAYS); + DurationItem durationItem = new DurationItem("duration","Duration", + TimeUnit.MILLISECONDS, supportedUnits, false, false, this); + intervalField.setEditorType(durationItem);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/ScheduleTableCollectionWidget.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/ScheduleTableCollectionWidget.java deleted file mode 100644 index 6600cf8..0000000 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/ScheduleTableCollectionWidget.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * RHQ Management Platform - * Copyright (C) 2005-2012 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 as published by - * the Free Software Foundation version 2 of the License. - * - * 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. - * - * 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. - */ -package org.rhq.enterprise.gui.coregui.client.inventory.common; - -import com.smartgwt.client.widgets.form.DynamicForm; -import com.smartgwt.client.widgets.form.fields.CanvasItem; -import com.smartgwt.client.widgets.form.fields.SelectItem; -import com.smartgwt.client.widgets.form.fields.SpinnerItem; -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.ShowValueEvent; -import com.smartgwt.client.widgets.form.fields.events.ShowValueHandler; -import com.smartgwt.client.widgets.form.validator.IntegerRangeValidator; -import org.rhq.enterprise.gui.coregui.client.CoreGUI; -import org.rhq.enterprise.gui.coregui.client.Messages; -import org.rhq.enterprise.gui.coregui.client.util.Log; -import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; - -import java.util.LinkedHashMap; - -/** - * This widget is used inside the ListGrid controls when editing the collection interval - * in place. It shows up inside the grid cell when you click on it to edit the cell. The - * control consists of a collection interval spinner for entering the collection interval - * time period and a unit of measure SelectItem to choose the time measurement units. - * - * @author Mike Thompson - */ -public class ScheduleTableCollectionWidget extends CanvasItem { - private static final Messages MSG = CoreGUI.getMessages(); - - private static final String UNITS_SECONDS = "s"; - private static final String UNITS_MINUTES = "m"; - private static final String UNITS_HOURS = "h"; - - private DynamicForm form; - private SpinnerItem collectionIntervalSpinnerItem = new SpinnerItem(); - private IntegerRangeValidator integerRangeValidator = new IntegerRangeValidator(); - private SelectItem unitsItem = new SelectItem(); - - // Maps values to labels for the units select list. - private static final LinkedHashMap<String, String> VALUE_MAP = new LinkedHashMap<String, String>(); - static { - VALUE_MAP.put(UNITS_SECONDS, MSG.common_unit_seconds()); - VALUE_MAP.put(UNITS_MINUTES, MSG.common_unit_minutes()); - VALUE_MAP.put(UNITS_HOURS, MSG.common_unit_hours()); - } - - private AbstractSchedulesView schedulesView; - - public ScheduleTableCollectionWidget(String locatorId, final AbstractSchedulesView schedulesView) { - super(locatorId); - this.schedulesView = schedulesView; - - form = new LocatableDynamicForm("collectionIntervalForm"); - form.setNumCols(2); - collectionIntervalSpinnerItem.setWidth(50); - collectionIntervalSpinnerItem.setShowTitle(false); - integerRangeValidator.setMin(1); - integerRangeValidator.setMax(10000000); // avoids exceptions if someone enters really large nums; no one needs to go higher anyway - collectionIntervalSpinnerItem.setValidators(integerRangeValidator); - collectionIntervalSpinnerItem.addChangedHandler(new ChangedHandler() { - @Override - public void onChanged(ChangedEvent changedEvent) { - Long collectionInterval = Long.valueOf(changedEvent.getItem().getValue() + ""); - Log.debug("Collection interval value Changed to: " + collectionInterval + " " + unitsItem.getValueAsString()); - schedulesView.updateSchedules(convertToMillis(collectionInterval, unitsItem.getValueAsString())); - } - }); - - // Specify a null title so no label is rendered to the left of the combo box. - unitsItem.setValueMap(VALUE_MAP); - unitsItem.setDefaultValue(UNITS_MINUTES); - unitsItem.setShowTitle(false); - unitsItem.setWidth(100); - unitsItem.addChangedHandler(new ChangedHandler() { - @Override - public void onChanged(ChangedEvent event) { - - Long collectionInterval = Long.valueOf(collectionIntervalSpinnerItem.getValueAsString()); - Log.debug("Collection interval units changed to: " + unitsItem.getValueAsString()); - String value = (String) event.getValue(); - if (value.equals(UNITS_SECONDS)) { - integerRangeValidator.setMin(30); - } else { - integerRangeValidator.setMin(1); - } - schedulesView.updateSchedules(convertToMillis(collectionInterval, unitsItem.getValueAsString())); - } - }); - - addShowValueHandler(new ShowValueHandler() { - @Override - public void onShowValue(ShowValueEvent event) { - Integer rawValue = (Integer) event.getDataValue(); - convertToProperUnits(rawValue); - } - }); - - if (!schedulesView.hasWriteAccess()) { - collectionIntervalSpinnerItem.setDisabled(true); - unitsItem.setDisabled(true); - } - - form.setFields(collectionIntervalSpinnerItem, unitsItem); - setCanvas(form); - } - - private void convertToProperUnits(long milliseconds){ - if (milliseconds > 1000) { - long seconds = milliseconds / 1000; - if (seconds >= 60) { - long minutes = seconds / 60; - seconds = seconds % 60; - if (minutes > 60) { - long hours = minutes / 60; - collectionIntervalSpinnerItem.setValue(hours); - minutes = minutes % 60; - unitsItem.setValue(UNITS_HOURS); - collectionIntervalSpinnerItem.setStep(1); - } - if (minutes != 0) { - collectionIntervalSpinnerItem.setValue(minutes); - unitsItem.setValue(UNITS_MINUTES); - collectionIntervalSpinnerItem.setStep(5); - } - } - if (seconds != 0) { - unitsItem.setValue(UNITS_SECONDS); - collectionIntervalSpinnerItem.setValue(seconds); - collectionIntervalSpinnerItem.setStep(5); - } - } - } - - private long convertToMillis(long collectionInterval, String timeUnitString){ - long millis = 0; - - if(timeUnitString.equals(UNITS_SECONDS)){ - millis = collectionInterval * 1000; - - }else if(timeUnitString.equals(UNITS_MINUTES)){ - millis = collectionInterval * (60 * 1000); - - }else if(timeUnitString.equals(UNITS_HOURS)){ - millis = collectionInterval * (60 * 60 * 1000); - } - return millis; - - } - - - public Long getInterval() { - - if (collectionIntervalSpinnerItem.getValue() == null || !collectionIntervalSpinnerItem.validate()) { - return null; - } - Long intervalValue = Long.valueOf(collectionIntervalSpinnerItem.getValueAsString()); - return convertToMillis(intervalValue, unitsItem.getValueAsString()); - } - -} -
rhq-commits@lists.fedorahosted.org