GWT: вернуть VerticalPanel из функции в ClickHandler
Я пытаюсь получить всплывающее окно при нажатии на изображение. ниже фрагмент кода:
while(index<bookList.size()){
if(cellCount<4){
image[index] = new Image(imageList.get(index));
final int imageIndex = index;
table.setWidget(row, cellCount, new Image(bookList.get(index)));
table.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
VerticalPanel vPanel = new VerticalPanel();
vPanel = imageDetail.getPopup(popup, image[imageIndex]);
popup.setAnimationEnabled(true);
popup.setGlassEnabled(true);
popup.setAutoHideEnabled(false);
popup.setWidth("300px");
popup.setHeight("300px");
popup.add(vPanel);
popup.center();
}});
table.getFlexCellFormatter().setStyleName(row, cellCount, "ImageCell");
cellCount++;
index++;
}
Выше код содержит clickhandler, который вызывает "getPopup" объекта imageDetail. Функция "getPopup" возвращает вертикальную панель, которая добавляется в PopupPanel. Класс ImageDetail выглядит следующим образом
public class ImageDetails extends Composite {
private Image closeButton;
VerticalPanel getPopup(final PopupPanel popup, Image image){
VerticalPanel vPanel = new VerticalPanel();
//Close Button
HorizontalPanel closePanel = new HorizontalPanel();
closeButton = new Image("/Images/closebutton.jpg");
closeButton.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
// TODO Auto-generated method stub
popup.hide();
}});
closePanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
closePanel.add(closeButton);
vPanel.add(closePanel);
VerticalPanel imagePanel = new VerticalPanel();
imagePanel.add(image);
vPanel.add(imagePanel);
return vPanel;
}
Мои вопросы следующие: 1) Можно ли вернуть панели из функции? Если нет, то почему? Если да, то почему приведенный выше код выдает "Неизвестное исключенное исключение com.google.gwt.event.shared.UmbrellaException: обнаружены 3 исключения: нуль; ноль; ноль"?
2) Когда я пытаюсь добавить вертикальную панель к всплывающей панели в функции "getPopup" и получаю оттуда всплывающую панель, код возвращает ту же ошибку, что и в первом вопросе. Что мне не хватает?
Я пропускаю какой-либо вызов функции initWidget(w)?
Спасибо