2014-11-20 2 views
0

Я создаю раскрывающийся список, который должен иметь CREATE, DELETE, SUBMIT для определенной строки в таблице. Может кто-нибудь помочь мне, как создать его в GWT.Как создать раскрывающийся список по правому клику в GWT

table.addCellPreviewHandler(new Handler<RequestDto>() 
    { 

     @Override 
     public void onCellPreview(CellPreviewEvent<RequestDto> event) 
     { 
      if (event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT) 
      { 


       MenuBar options = new MenuBar(); 
       MenuBar gwtPop = new MenuBar(); 
       options.addItem("Create", gwtPop); 
       options.addItem("Submit", gwtPop); 
       MenuItem Import = new MenuItem(new SafeHtmlBuilder().appendEscaped("Import").toSafeHtml()); 
       Import.setScheduledCommand(new ScheduledCommand() 
       { 

        @Override 
        public void execute() 
        { 
         Window.alert("hello"); 
        } 
       }); 
      final DialogBox menuWrapper = new DialogBox(true); 
       menuWrapper.add(options); 
       gwtPop.addItem(Import); 

ответ

0

Прежде всего, не создавайте свое меню внутри метода onCellPreview. Нет необходимости создавать один и тот же виджет снова и снова при каждом нажатии.

Вы можете сделать что-то вроде этого:

int clickedRow = -1; 
... 
// build your menu here 
// use clickedRow where necessary, for example: 

deleteMenuItem.setScheduledCommand(new ScheduledCommand() { 

    @Override 
    public void execute() { 
     Window.alert("hello, I am about to delete row " + clickedRow); 
    } 
}); 
... 
myTable.addCellPreviewHandler(new Handler<MyObject>() { 

    @Override 
    public void onCellPreview(CellPreviewEvent<MyObject> event) { 
     if (event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT) { 
      event.getNativeEvent().stopPropagation(); 
      clickedRow = event.getIndex(); 
      // show your menu - no need to construct it again 
    } 
} 
Смежные вопросы