Как установить ширину текстового поля при редактировании поля?
EditTextCell febCell = new EditTextCell();
Column<DTO, String> febColumn = new Column<DTO, String>(febCell){
@Override
public String getValue(DTO object) {
return (String.valueOf(object.getFeb()));
}
};
febColumn.setFieldUpdater(new FieldUpdater<DTO, String>() {
public void update(int index, DTO object, String value) {
System.out.println("index="+index+" resourceId="+object.getId()+" feb="+value);
}
});
febColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LOCALE_END);
cellTable.addColumn(febColumn, "Feb");
cellTable.setColumnWidth(febColumn, 3, Unit.PCT);
Все работает хорошо, но когда я нажимаю на редактируемое поле, появляется очень большое текстовое поле. Итак, как я могу настроить этот виджет для редактирования данных?
Если я устанавливаю ширину в PX вместо PCT, например
cellTable.setColumnWidth(febColumn, 25, Unit.PX);
ячейка не взрывается во время редактирования, но внутреннее текстовое поле по-прежнему имеет одинаковую длинную ширину, а длинное строковое значение скрывается за правой стороной.
OK. Вероятно, мне нужно изобретать колесо для каждого вида EditTextCell:
MyEditTextCell extends AbstractEditableCell<String, MyEditTextCell.ViewData> ...
interface MyTemplate extends SafeHtmlTemplates {
@Template("<input type=\"text\" value=\"{0}\" tabindex=\"-1\" size=\"{1}\" maxlength=\"{1}\" style=\"{2}\"></input>")
SafeHtml input(String value, Integer maxLength, String style);
}
...
@Override public void render(com.google.gwt.cell.client.Cell.Context context,
String value, SafeHtmlBuilder sb) {...
sb.append(template.input(text, maxLegth, style));
И используйте такой виджетов:
MyEditTextCell febCell = new MyEditTextCell(SimpleSafeHtmlRenderer.getInstance(), 4, "width:35px;");
Любые идеи приветствуются.