I was able to reproduce using BuiltInDS and v10.1p_2016-03-02.
The problem is with providing custom editor to fields that would have been TextAreaItems normally.
Please change this in animals.ds.xml (see the length="500"):
Code:
<field name="status" title="Endangered Status" type="text" length="500" />
Code:
package com.smartgwt.sample.client;
import java.util.LinkedHashMap;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.AdvancedCriteria;
import com.smartgwt.client.data.Criterion;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.OperatorId;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.PageKeyHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridEditorContext;
import com.smartgwt.client.widgets.grid.ListGridEditorCustomizer;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.layout.VLayout;
public class BuiltInDS implements EntryPoint {
private VLayout mainLayout;
private IButton recreateBtn;
public void onModuleLoad() {
KeyIdentifier debugKey = new KeyIdentifier();
debugKey.setCtrlKey(true);
debugKey.setKeyName("D");
Page.registerKey(debugKey, new PageKeyHandler() {
public void execute(String keyName) {
SC.showConsole();
}
});
mainLayout = new VLayout(20);
mainLayout.setWidth100();
mainLayout.setHeight100();
recreateBtn = new IButton("Recreate");
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
recreate();
}
});
mainLayout.addMember(recreateBtn);
recreate();
mainLayout.draw();
}
private void recreate() {
Window w = new Window();
w.setWidth("95%");
w.setHeight("95%");
w.setMembersMargin(0);
w.setModalMaskOpacity(70);
w.setTitle("ListGrid-editRow FormItems get ListGrid CSS classes when normal editor is TextAreaItem");
w.setShowMinimizeButton(false);
w.setIsModal(true);
w.setShowModalMask(true);
w.centerInPage();
final ListGrid animalsGrid = new ListGrid();
animalsGrid.setHeight100();
animalsGrid.setAutoFetchData(false);
animalsGrid.setCanEdit(true);
animalsGrid.setDataSource(DataSource.get("animals"));
animalsGrid.setCanGroupBy(false);
animalsGrid.setShowRecordComponents(false);
animalsGrid.setShowRecordComponentsByCell(false);
ListGridField commonName = new ListGridField("commonName");
commonName.setCanEdit(false);
ListGridField scientificName = new ListGridField("scientificName");
scientificName.setCanEdit(false);
ListGridField lifeSpan = new ListGridField("lifeSpan");
ListGridField status = new ListGridField("status");
ListGridField diet = new ListGridField("diet");
diet.setCanEdit(false);
animalsGrid.setEditorCustomizer(new ListGridEditorCustomizer() {
public FormItem getEditor(ListGridEditorContext context) {
ListGridField field = context.getEditField();
String animal = context.getEditedRecord().getAttributeAsString("commonName");
switch (animal) {
case "Anteater":
switch (field.getName()) {
case "lifeSpan":
return new StaticTextItem();
case "status":
return new SelectItem() {
{
setValueMap(new LinkedHashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("Y", "Yes");
put("N", "No");
}
});
}
};
default:
return context.getDefaultProperties();
}
case "Arabian Camel":
switch (field.getName()) {
case "lifeSpan":
return new StaticTextItem();
case "status":
return new TextItem();
default:
return context.getDefaultProperties();
}
default:
return context.getDefaultProperties();
}
}
});
animalsGrid.setFields(commonName, scientificName, lifeSpan, status, diet);
animalsGrid.setSort(new SortSpecifier[] { new SortSpecifier(commonName.getName(), SortDirection.ASCENDING) });
animalsGrid.fetchData(new AdvancedCriteria(new Criterion("commonName", OperatorId.STARTS_WITH, "A")));
w.addItem(animalsGrid);
w.show();
}
}
Screenshots:
I'm not sure what causes the different display for the TextItem. It starts always white (but with wrong borders) and sometimes switches to yellow when you don't focus the TextItem/move the mouse pointer away.
Best regards
Blama
Leave a comment: