Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Optional;
- import com.google.gwt.event.dom.client.ClickHandler;
- import com.google.gwt.event.dom.client.KeyCodes;
- import com.google.gwt.user.client.Event;
- import com.google.gwt.user.client.ui.*;
- public class InfoDialog extends DialogBox {
- protected final Widget widget;
- protected final Button btnClose = new Button("Close", (ClickHandler) e -> hide());
- protected Optional<Focusable> onCloseFocusedWidget = Optional.empty();
- public InfoDialog(String title, Widget widget) {
- this.widget = widget;
- final VerticalPanel mainPanel = new VerticalPanel();
- final Panel buttonsPanel = new HorizontalPanel();
- mainPanel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
- mainPanel.add(widget);
- mainPanel.add(new HTML("<hr/>"));
- mainPanel.add(buttonsPanel);
- buttonsPanel.setStyleName("buttons-panel");
- buttonsPanel.add(btnClose);
- setText(title);
- setWidget(mainPanel);
- }
- public InfoDialog withOnCloseFocusable(Focusable widget) {
- onCloseFocusedWidget = Optional.of(widget);
- return this;
- }
- public InfoDialog withButtonText(String text) {
- btnClose.setText(text);
- return this;
- }
- @Override
- public void show() {
- super.show();
- if (widget instanceof Focusable)
- ((Focusable) widget).setFocus(true);
- }
- @Override
- public void center() {
- super.center();
- if (widget instanceof Focusable)
- ((Focusable) widget).setFocus(true);
- }
- @Override
- public void hide() {
- super.hide();
- onCloseFocusedWidget.ifPresent(f -> f.setFocus(true));
- }
- @Override
- protected void onPreviewNativeEvent(Event.NativePreviewEvent event) {
- super.onPreviewNativeEvent(event);
- if (event.getTypeInt() == Event.ONKEYDOWN) {
- final int code = event.getNativeEvent().getKeyCode();
- switch (code) {
- case KeyCodes.KEY_ENTER:
- case KeyCodes.KEY_ESCAPE:
- hide(); break;
- }
- }
- }
- }
- // example:
- public static void showMessage(String title, String message) {
- new InfoDialog(title, new HTML(message)).center();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement