Я запутался с простой панелью и ее единственной дочерней функцией виджета.
Следующее вызовет исключение для одного дочернего виджета. Как всплывающее окно нарушает правило одного дочернего виджета? Если я создаю внутренний класс, расширяющий PopupPanel, то больше нет одного исключения виджета.
Спасибо
Class DashBoardPanel extends SimplePanel{
private PopupPanel popup=new PopupPanel(true);
...
public void initDashBoardPanel(ArrayList<EventDTO> _evtAry)
{
Iterator<EventDTO> it=_evtAry.iterator();
int row=0; int col=0;
while(it.hasNext())
{
final EventDTO evt=it.next();
//every 3 column, next row
if(col==3)
{
col=0;
row=row+1;
}
Image evtPic=new Image(GWT.getHostPageBaseURL()+"photoServlet?photoName="+evt.getEvtPicName());
evtPic.setSize("200px", "200px");
Button editBtn=new Button("Edit");
FlexTable evtTab=new FlexTable();
evtTab.setWidget(0, 0, evtPic);
evtTab.setWidget(1, 0, editBtn);
this.evtFlexTable.setWidget(row, col, evtTab);
editBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
FlexTable table =new FlexTable();
table.setWidget(0, 0, new Label(evt.getEvtName()));
popup.add(table);
popup.center();
}
});
col=col+1;
}
frame.add(new Label("DASH BOARD"));
frame.add(this.evtFlexTable);
this.btnPanel.setWidget(0, 0, this.btn1);
this.btnPanel.setWidget(0, 1, this.btn2);
frame.add(this.btnPanel);
this.add(frame);
}
Но если я создаю внутренний класс, расширяющий Popup, то SimplePanel не будет исключение одного дочернего виджета.
public class DashBoardPanel extends SimplePanel{
private EvtEditPopup evtEditPopup=new EvtEditPopup();
//Replaced the popup by this
public class EvtEditPopup extends PopupPanel
{
FlexTable table =new FlexTable();
String evtName="Event";
//table.setWidget(0, 0, new Label(evt.getEvtName()));
public EvtEditPopup()
{
super(true);
table.setWidget(0, 0, new Label(evtName));
this.add(table);
}
public void setEvtName(String _evtName)
{
this.evtName=_evtName;
table.setWidget(0, 0, new Label(evtName));
}
public String getEvtName()
{
return this.evtName;
}
}
public void initDashBoardPanel(ArrayList<EventDTO> _evtAry)
......
editBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
DashBoardPanel.this.evtEditPopup.setEvtName(evt.getEvtName());
DashBoardPanel.this.evtEditPopup.center();
}
});