У меня есть класс таблицы данных, который расширяет xDataTable в классе таблицы. Я использую обработчик table.addclick для обработки щелчков заголовка таблицы.
protected void addSortClickHandler() {
table.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent ev) {
В моем классе saveLoadMenu я использую класс таблицы.
dataTable = new xSortableDataTable<SavedQuote>() {
protected void onSelectionChanged() {
if(getSelectedItem() != null) {
okButton.setEnabled(true);
if(deleteButton!=null) {
deleteButton.setEnabled(true);
}
} else {
okButton.setEnabled(false);
if(deleteButton!=null) {
deleteButton.setEnabled(false);
}
}
}
};
В этом классе мне нужно иметь возможность связать событие click, поэтому, если я щелкаю по заголовку и запускаю onClick, он вызывает класс saveLoadMenu.
Вот частькласс таблицы
public class xSortableDataTable<ItemType> extends xDataTable<ItemType> {
private boolean lastSortWasReverse = false;
private List<Integer> sortableColumns = new ArrayList<Integer>();
private String sortAscImage = "common/image/datatable/uparrow.gif";
private String sortDescImage = "common/image/datatable/downarrow.gif";
private int lastSortedColumn;
private AcceptanceCallback acceptanceCallback;
public xSortableDataTable() {
super();
addSortClickHandler();
}
protected void addSortClickHandler() {
table.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent ev) {
HTMLTable.Cell c = table.getCellForEvent(ev);
if (c != null) {
//handle the callback to the saveLoadMenu class
}
}
});
}
Не могу потерять область видимости класса saveLoadMenu.Поскольку он уже создан с использованием переданных в панелях и тому подобное.Есть ли способ обработки таблицы по клику и обратного вызова класса?
Возможно ли это?
ОБНОВЛЕНИЕ
Я смог это сделать.Я создал абстрактный класс для обработки onClick (). Я опубликую код, так как он может помочь кому-то еще.
public abstract class AcceptanceCallback {
public void onOK(){}
public void onCancel(){}
}
в классе таблицы, который обрабатывает onClick
public ManageQuoteSortableDataTable(AcceptanceCallback acceptanceCallback) {
super();
this.acceptanceCallback = acceptanceCallback;
}
protected void addSortClickHandler() {
table.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent ev) {
HTMLTable.Cell c = table.getCellForEvent(ev);
if (c != null) {
if (c.getRowIndex() == 0 && isColumnSortable(c.getCellIndex())) {
acceptanceCallback.onOK();
}
}
}
});
}
Затемв классе, который устанавливает таблицу
dataTable = new ManageQuoteSortableDataTable<SavedQuote>(new
AcceptanceCallback() {
@Override
public void onOK() {
}
});