protected void onKeyPress(WindowEvent we) { int keyCode = we.getKeyCode(); boolean t = getElement() .isOrHasChild( (com.google.gwt.dom.client.Element) we.getEvent().getEventTarget().cast()); boolean key = GXT.isFocusManagerEnabled() ? we.isShiftKey() : true; if (key && closable && onEsc && keyCode == KeyCodes.KEY_ESCAPE && t) { hide(); } if (GXT.isAriaEnabled()) { if (we.getTarget() == moveBtn.getElement()) { Point p = getPosition(true); switch (we.getKeyCode()) { case KeyCodes.KEY_LEFT: setPosition(p.x - ariaMoveResizeDistance, p.y); break; case KeyCodes.KEY_RIGHT: setPosition(p.x + ariaMoveResizeDistance, p.y); break; case KeyCodes.KEY_DOWN: setPosition(p.x, p.y + ariaMoveResizeDistance); break; case KeyCodes.KEY_UP: setPosition(p.x, p.y - ariaMoveResizeDistance); break; } } else if (we.getTarget() == resizeBtn.getElement()) { if (!resizable) { return; } Size s = getSize(); switch (we.getKeyCode()) { case KeyCodes.KEY_LEFT: setSize(s.width - ariaMoveResizeDistance, s.height); break; case KeyCodes.KEY_RIGHT: setSize(s.width + ariaMoveResizeDistance, s.height); break; case KeyCodes.KEY_DOWN: setSize(s.width, s.height + ariaMoveResizeDistance); break; case KeyCodes.KEY_UP: setSize(s.width, s.height - ariaMoveResizeDistance); break; } } } }
/** * Restores a maximized window back to its original size and position prior to being maximized and * also replaces the 'restore' tool button with the 'maximize' tool button. */ public void restore() { if (maximized) { el().removeStyleName("x-window-maximized"); if (maximizable) { restoreBtn.setVisible(false); maxBtn.setVisible(true); } if (restoreShadow != null && restoreShadow.booleanValue() && layer != null) { layer.enableShadow(); restoreShadow = null; } if (draggable) { dragger.setEnabled(true); } if (resizable) { resizer.setEnabled(true); } head.addStyleName("x-window-draggable"); if (restorePos != null) { setPosition(restorePos.x, restorePos.y); boolean cacheSizesRestore = cacheSizes; cacheSizes = false; setSize(restoreSize.width, restoreSize.height); cacheSizes = cacheSizesRestore; } if (container == null && restoreWindowScrolling != null) { com.google.gwt.dom.client.Document.get() .enableScrolling(restoreWindowScrolling.booleanValue()); restoreWindowScrolling = null; } maximized = false; fireEvent(Events.Restore, new WindowEvent(this)); } }
protected void fitContainer() { if (container != null) { Rectangle bounds = fly(container).getBounds(); setPagePosition(bounds.x, bounds.y); setSize(bounds.width, bounds.height); } else { setPosition(0, 0); setSize(XDOM.getViewportWidth(), XDOM.getViewportHeight()); } }
protected void afterShow() { hidden = false; // layout early to render window's content for size calcs if (!layoutExecuted || isLayoutNeeded()) { layout(); } if (restorePos != null) { setPosition(restorePos.x, restorePos.y); if (restoreSize != null) { setSize(restoreSize.width, restoreSize.height); } } if (restoreWindowScrolling != null) { com.google.gwt.dom.client.Document.get().enableScrolling(false); } int h = getHeight(); int w = getWidth(); if (h < minHeight && w < minWidth) { setSize(minWidth, minHeight); } else if (h < minHeight) { setHeight(minHeight); } else if (w < minWidth) { setWidth(minWidth); } // not positioned, then center if (!positioned) { el().center(true); } el().updateZIndex(0); if (modal) { modalPreview = Event.addNativePreviewHandler( new NativePreviewHandler() { public void onPreviewNativeEvent(NativePreviewEvent event) { if (Element.is(event.getNativeEvent().getEventTarget())) { Element target = (Element) Element.as(event.getNativeEvent().getEventTarget()); String tag = target.getTagName(); // ignore html and body because of frames if (!resizing && !dragging && !tag.equalsIgnoreCase("html") && !tag.equalsIgnoreCase("body") && event.getTypeInt() != Event.ONLOAD && manager.getActive() == Window.this && (modalPanel == null || (modalPanel != null && !modalPanel.getElement().isOrHasChild(target))) && !Window.this.getElement().isOrHasChild(target) && fly(target).findParent(".x-ignore", -1) == null) { ArrayList<Component> col = new ArrayList<Component>(ComponentManager.get().getAll()); for (Component c : col) { if (c instanceof TriggerField<?>) { triggerBlur((TriggerField<?>) c); } else if (c instanceof Menu) { ((Menu) c).hide(true); } } Window.this.focus(); } } } private native void triggerBlur(TriggerField<?> field) /*-{ [email protected]::triggerBlur(Lcom/extjs/gxt/ui/client/event/ComponentEvent;)(null); }-*/; }); } // missing cursor workaround if (GXT.isGecko) { El e = el().selectNode(".x-window-bwrap"); if (e != null) { e.dom.getStyle().setProperty("overflow", "auto"); e.dom.getStyle().setProperty("position", "static"); } } eventPreview.add(); if (maximized) { maximize(); } removeStyleName(HideMode.VISIBILITY.value()); if (GXT.isAriaEnabled()) { Accessibility.setState(getElement(), "aria-hidden", "false"); } fireEvent(Events.Show, new WindowEvent(this)); toFront(); }