GWT - обрабатывать щелчки заголовка таблицы в другом классе - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть класс таблицы данных, который расширяет 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() {

          }
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...