Я загружаю значки файлов на сетку плитки в проекте smartGWT. Когда нажата клавиша Enter, я хочу открыть выбранный файл для отображения.
Когда я переопределяю обработчик onKeyPress, он работает, но поведение навигации по сетке плитки с использованием клавиш со стрелками влево/вправо/вверх/вниз теряется.
Мой вопрос: как сохранить поведение обработки по умолчанию, но при этом переопределить клавишу Enter.
tileGrid.addKeyPressHandler (new KeyPressHandler() {
@Override
public void onKeyPress(KeyPressEvent event) {
if (EventHandler.getKey().equals("Enter")) {
//do something special here
}
else {
**//TODO: do the default processing..**.
}
}
});
РЕДАКТИРОВАТЬ:
@Ras, вот код, который имитирует проблему.
package com.rv.gwtsample.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.events.KeyPressEvent;
import com.smartgwt.client.widgets.events.KeyPressHandler;
import com.smartgwt.client.widgets.tile.TileGrid;
import com.smartgwt.client.widgets.tile.TileRecord;
/**
* @author rvnath
*
*/
public class MyTileGrid implements EntryPoint {
/* (non-Javadoc)
* @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
*/
@Override
public void onModuleLoad() {
// TODO Auto-generated method stub
TileGrid grid = new TileGrid();
grid.setLeft(50);
grid.setTop(50);
grid.setWidth("300");
grid.setHeight("200");
DetailViewerField field = new DetailViewerField("Name");
grid.setFields(field);
grid.addKeyPressHandler(new KeyPressHandler() {
@Override
public void onKeyPress(KeyPressEvent event) {
if (event.getKeyName().equals("Enter"))
GWT.log("Enter pressed");
}
});
Record[] rec = new TileRecord[32];
for (int i=0; i<32; ++i) {
rec[i] = new TileRecord();
}
grid.setData(rec);
grid.draw();
}
}
Если я отключу обработчик onKeyPress, клавиши со стрелками смогут перемещаться между элементами сетки плитки. Если я включаю, то вся панель сетки плитки прокручивается вместо изменения выбора.