Versions:
GWT 2.4.0
GXT 2.2.5
Browsers Tested(Windows):
IE8
Firefox 3.6
Problem:
In IE8 I have a Grid with a RowEditor plugin. When editing I have a row with a TextField, ComboBox, NumberField, and DateField but unless I click on text which is inside an editable field I can not click to set the focus on any of the fields. Firefox 3.6 doesn't have this problem. If I use the sencha.com/examples and try the RowEditor Grid using IE8 I can not reproduce the problem.
Demonstrate the problem:
Code:
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.form.DateField;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.RowEditor;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.NumberFormat;
public class PopupRowEditorTestTable extends Window
{
private DateTimeFormat df = DateTimeFormat.getFormat("MM/dd/y");
public PopupRowEditorTestTable()
{
super();
setLayout(new FitLayout());
final SimpleComboBox<String> combo = new SimpleComboBox<String>();
combo.setForceSelection(true);
combo.setTriggerAction(TriggerAction.ALL);
combo.add("Bob");
combo.add("Harry");
combo.add("Frank");
TextField<String> inputText = new TextField<String>();
inputText.setAllowBlank(false);
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("TEXT");
column.setHeader("text");
column.setWidth(220);
column.setEditor(new CellEditor(inputText));
configs.add(column);
CellEditor editor = new CellEditor(combo) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return value;
}
return combo.findModel(value.toString());
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
column = new ColumnConfig();
column.setId("COMBO");
column.setHeader("combo");
column.setWidth(65);
column.setEditor(editor);
configs.add(column);
column = new ColumnConfig();
column.setId("NUMBER");
column.setHeader("number");
column.setAlignment(HorizontalAlignment.RIGHT);
column.setWidth(55);
column.setNumberFormat(NumberFormat.getCurrencyFormat());
column.setEditor(new CellEditor(new NumberField()));
configs.add(column);
DateField dateField = new DateField();
dateField.getPropertyEditor().setFormat(DateTimeFormat.getFormat("MM/dd/y"));
column = new ColumnConfig();
column.setId("DATE");
column.setHeader("date");
column.setWidth(95);
column.setEditor(new CellEditor(dateField));
column.setDateTimeFormat(DateTimeFormat.getFormat("MMM dd yyyy"));
configs.add(column);
ColumnModel cm = new ColumnModel(configs);
List<ModelData> models = new ArrayList<ModelData>();
BaseModel model = new BaseModel();
model.set("COMBO", "Bob");
model.set("TEXT", "delete, click off, try to regain focus by clicking");
model.set("NUMBER", 2.3);
model.set("DATE", df.parse("03/15/2006"));
models.add(model);
ListStore<ModelData> store = new ListStore<ModelData>();
store.add(models);
final RowEditor<ModelData> re = new RowEditor<ModelData>();
final Grid<ModelData> grid = new Grid<ModelData>(store, cm);
grid.setAutoExpandColumn("TEXT");
grid.setBorders(false);
grid.addPlugin(re);
grid.getView().setForceFit(true);
grid.getView().setAutoFill(true);
add(grid);
setSize(600, 150);
}
}