package com.baselet.gwt.client.view.widgets; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Event.NativePreviewEvent; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; public class MyPopupPanel extends PopupPanel { public enum Type { POPUP, MENU } private String header; private Type type; public MyPopupPanel(boolean glassEnabled, Type type) { super(true); setGlassEnabled(glassEnabled); this.type = type; } public void setHeader(String header) { this.header = header; } @Override public void setWidget(Widget w) { switch (type) { case POPUP: addStyleName("centerPopup"); w.addStyleName("centerPopupContent"); break; case MENU: addStyleName("menuPopup"); break; } if (header == null) { super.setWidget(w); } else { FlowPanel fp = new FlowPanel(); fp.add(new HTML("<div class=\"popupHeader\">" + header + "</div>")); fp.add(w); super.setWidget(fp); } } /** * pressing ESC closes the dialogbox */ @Override protected void onPreviewNativeEvent(NativePreviewEvent event) { super.onPreviewNativeEvent(event); if (event.getTypeInt() == Event.ONKEYDOWN && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) { hide(); } } }