From: Jouni Koivuviita Date: Wed, 13 Feb 2008 08:36:21 +0000 (+0000) Subject: Added ShortcutActionHandler to IPanel. X-Git-Tag: 6.7.0.beta1~5045 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=bd39ed23812e038a0f236496137f7fdbe8711772;p=vaadin-framework.git Added ShortcutActionHandler to IPanel. svn changeset:3787/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java index 8ec49570ee..621ff3f756 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java @@ -43,6 +43,8 @@ public class IPanel extends SimplePanel implements Paintable, private Paintable layout; + ShortcutActionHandler shortcutHandler; + public IPanel() { super(); DOM.appendChild(getElement(), captionNode); @@ -58,6 +60,7 @@ public class IPanel extends SimplePanel implements Paintable, + "-content"); DOM.setElementProperty(bottomDecoration, "className", CLASSNAME + "-deco"); + DOM.sinkEvents(getElement(), Event.ONKEYDOWN); } protected Element getContainerElement() { @@ -148,6 +151,20 @@ public class IPanel extends SimplePanel implements Paintable, } (layout).updateFromUIDL(layoutUidl, client); + // We may have actions attached to this panel + if (uidl.getChildCount() > 1) { + final int cnt = uidl.getChildCount(); + for (int i = 1; i < cnt; i++) { + UIDL childUidl = uidl.getChildUIDL(i); + if (childUidl.getTag().equals("actions")) { + if (shortcutHandler == null) { + shortcutHandler = new ShortcutActionHandler(id, client); + } + shortcutHandler.updateActionMap(childUidl); + } + } + } + } private void handleError(UIDL uidl) { @@ -256,9 +273,14 @@ public class IPanel extends SimplePanel implements Paintable, public void onBrowserEvent(Event event) { final Element target = DOM.eventGetTarget(event); + final int type = DOM.eventGetType(event); + if (type == Event.ONKEYDOWN && shortcutHandler != null) { + shortcutHandler.handleKeyboardEvent(event); + return; + } if (errorIndicatorElement != null && DOM.compare(target, errorIndicatorElement)) { - switch (DOM.eventGetType(event)) { + switch (type) { case Event.ONMOUSEOVER: if (errorMessage != null) { errorMessage.showAt(errorIndicatorElement); @@ -280,14 +302,14 @@ public class IPanel extends SimplePanel implements Paintable, } /** - * Panal handles dimensions by itself + * Panel handles dimensions by itself. */ public void setHeight(String height) { // NOP } /** - * Panal handles dimensions by itself + * Panel handles dimensions by itself. */ public void setWidth(String width) { // NOP diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java index dc4da8d095..2f17484042 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java @@ -182,6 +182,10 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener { id = uidl.getId(); this.client = client; + // Workaround needed for Testing Tools (GWT generates window DOM + // slightly different in different browsers). + DOM.setElementProperty(closeBox, "id", id + "_window_close"); + if (uidl.hasAttribute("invisible")) { this.hide(); return; diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css index 7d0dc4789b..e6c3ee46b7 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css @@ -58,6 +58,7 @@ border-top: none; border-bottom: 1px solid #dee2e3; background-color: #fff; + overflow: auto; } .i-panel-deco {