/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.eas.window; import com.eas.window.events.ActivateEvent; import com.eas.window.events.ActivateHandler; import com.eas.window.events.BeforeCloseEvent; import com.eas.window.events.BeforeCloseHandler; import com.eas.window.events.ClosedEvent; import com.eas.window.events.ClosedHandler; import com.eas.window.events.DeactivateEvent; import com.eas.window.events.DeactivateHandler; import com.eas.window.events.MaximizeEvent; import com.eas.window.events.MaximizeHandler; import com.eas.window.events.MinimizeEvent; import com.eas.window.events.MinimizeHandler; import com.eas.window.events.MoveEvent; import com.eas.window.events.MoveHandler; import com.eas.window.events.RestoreEvent; import com.eas.window.events.RestoreHandler; import com.google.gwt.dom.client.Style; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.event.logical.shared.OpenEvent; import com.google.gwt.event.logical.shared.OpenHandler; import com.google.gwt.event.logical.shared.ResizeEvent; import com.google.gwt.event.logical.shared.ResizeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.HasHTML; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.RequiresResize; /** * * @author mg */ public class WindowPopupPanel extends PopupPanel implements WindowUI, RequiresResize { protected WindowPanel window = new WindowPanel() { @Override protected Widget getMovableTarget() { return WindowPopupPanel.this; } @Override protected void fireCloseEvent() { // no op here because of popup's event re-fire } }; public WindowPopupPanel() { super(); super.setWidget(window); initPopup(); } public WindowPopupPanel(boolean autoHide) { super(autoHide); super.setWidget(window); initPopup(); } public WindowPopupPanel(boolean autoHide, boolean modal) { super(autoHide, modal); super.setWidget(window); initPopup(); } public WindowPopupPanel(WindowPanel aWindowPanel, boolean autoHide, boolean modal) { super(autoHide, modal); window = aWindowPanel; super.setWidget(window); initPopup(); } protected final void initPopup() { setGlassEnabled(isModal()); // clearPopupDecorations getElement().getStyle().setBorderWidth(0, Style.Unit.PX); getElement().getStyle().setMargin(0, Style.Unit.PX); getElement().getStyle().setPadding(0, Style.Unit.PX); // close event re-fire addCloseHandler(new CloseHandler<PopupPanel>() { @Override public void onClose(CloseEvent<PopupPanel> event) { ClosedEvent.<WindowUI>fire(window, window); } }); } @Override public void onResize() { window.onResize(); } @Override public void setCaptionWidget(HasHTML aCaptionWidget) { window.setCaptionWidget(aCaptionWidget); } @Override public boolean isMovable() { return window.isMovable(); } @Override public void setMovable(boolean aValue) { window.setMovable(aValue); } @Override public boolean isMinimized() { return window.isMinimized(); } @Override public boolean isMaximized() { return window.isMaximized(); } @Override public boolean isMinimizable() { return window.isMinimizable(); } @Override public void setMinimizable(boolean minimizable) { window.setMinimizable(minimizable); } @Override public boolean isMaximizable() { return window.isMaximizable(); } @Override public void setMaximizable(boolean maximizable) { window.setMaximizable(maximizable); } @Override public boolean isClosable() { return window.isClosable(); } @Override public void setClosable(boolean Closable) { window.setClosable(Closable); } @Override public void maximize() { window.maximize(); } /** * Minimizes the window. Minimize here is setting zero as height. * Descendants may decide to do something else. minimize does a snapshot of * all window's metrics. So subsequent restore or restoreSnapshot calls will * lead to correct restoration of the window. */ @Override public void minimize() { window.minimize(); } @Override public void restoreSnapshot() { window.restoreSnapshot(); } @Override public void restore() { window.restore(); } @Override public boolean isActive() { return window.isActive(); } @Override public void activate() { window.activate(); } @Override public void deactivate() { window.deactivate(); } @Override public boolean isUndecorated() { return window.isUndecorated(); } @Override public void setUndecorated(boolean aValue) { window.setUndecorated(aValue); } @Override public boolean isResizable() { return window.isResizable(); } @Override public void setResizable(boolean aValue) { window.setResizable(aValue); } @Override public void setPosition(double aLeft, double aTop) { super.setPopupPosition((int) aLeft, (int) aTop); } @Override public void setSize(double aWidth, double aHeight) { setWidth(aWidth + "px"); setHeight(aHeight + "px"); } @Override public Widget getWidget() { return window.getWidget(); } @Override public void setWidget(Widget w) { window.setWidget(w); } @Override public HasHTML getCaptionWidget() { return window.getCaptionWidget(); } @Override public void close() { hide(); } @Override public void hide(boolean autoClosed) { if (!BeforeCloseEvent.<WindowUI>fire(window, window)) { super.hide(autoClosed); } } @Override public HandlerRegistration addOpenHandler(OpenHandler<WindowUI> handler) { return window.addHandler(handler, OpenEvent.getType()); } @Override public HandlerRegistration addClosedHandler(ClosedHandler<WindowUI> handler) { return window.addHandler(handler, ClosedEvent.getType()); } @Override public HandlerRegistration addBeforeCloseHandler(BeforeCloseHandler<WindowUI> handler) { return window.addHandler(handler, BeforeCloseEvent.getType()); } @Override public HandlerRegistration addActivateHandler(ActivateHandler<WindowUI> handler) { return window.addHandler(handler, ActivateEvent.getType()); } @Override public HandlerRegistration addDeactivateHandler(DeactivateHandler<WindowUI> handler) { return window.addHandler(handler, DeactivateEvent.getType()); } @Override public HandlerRegistration addMinimizeHandler(MinimizeHandler<WindowUI> handler) { return window.addHandler(handler, MinimizeEvent.getType()); } @Override public HandlerRegistration addMaximizeHandler(MaximizeHandler<WindowUI> handler) { return window.addHandler(handler, MaximizeEvent.getType()); } @Override public HandlerRegistration addRestoreHandler(RestoreHandler<WindowUI> handler) { return window.addHandler(handler, RestoreEvent.getType()); } @Override public HandlerRegistration addMoveHandler(MoveHandler<WindowUI> handler) { return window.addHandler(handler, MoveEvent.getType()); } @Override public HandlerRegistration addResizeHandler(ResizeHandler handler) { return window.addHandler(handler, ResizeEvent.getType()); } }