From ae45d975e2c4fec76efdcd88804a8384e066d163 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Tue, 26 Oct 2010 09:10:47 +0000 Subject: Fix for #5882 svn changeset:15706/svn branch:6.4 --- src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java index 59dd4f9611..d06d6b11a3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java @@ -1,4 +1,4 @@ -/* +/* @ITMillApache2LicenseForJavaFiles@ */ @@ -413,8 +413,10 @@ public class VGridLayout extends SimplePanel implements Paintable, Container { int canvasHeight; if ("".equals(height)) { canvasHeight = y - spacingPixelsVertical; - } else { + } else if (getOffsetHeight() > marginTopAndBottom) { canvasHeight = getOffsetHeight() - marginTopAndBottom; + } else { + canvasHeight = 0; } canvas.setHeight(canvasHeight + "px"); } -- cgit v1.2.3 From fdce6f8579a22c6fa7c8e2c2ccf91bd86926bc3c Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Tue, 26 Oct 2010 11:23:52 +0000 Subject: Rewrote [15706] svn changeset:15713/svn branch:6.4 --- .../vaadin/terminal/gwt/client/ui/VGridLayout.java | 23 +++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java index d06d6b11a3..beee1c4863 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java @@ -404,23 +404,36 @@ public class VGridLayout extends SimplePanel implements Paintable, Container { x += columnWidths[i] + spacingPixelsHorizontal; } - if ("".equals(width)) { + if (isUndefinedWidth()) { canvas.setWidth((x - spacingPixelsHorizontal) + "px"); } else { // main element defines width canvas.setWidth(""); } + + if (!isUndefinedHeight() && getOffsetHeight() < marginTopAndBottom) { + // Prevent a negative height value + canvas.setHeight("0px"); + return; + } + int canvasHeight; - if ("".equals(height)) { + if (isUndefinedHeight()) { canvasHeight = y - spacingPixelsVertical; - } else if (getOffsetHeight() > marginTopAndBottom) { - canvasHeight = getOffsetHeight() - marginTopAndBottom; } else { - canvasHeight = 0; + canvasHeight = getOffsetHeight() - marginTopAndBottom; } canvas.setHeight(canvasHeight + "px"); } + public boolean isUndefinedHeight() { + return "".equals(height) || "-1px".equals(height); + } + + public boolean isUndefinedWidth() { + return "".equals(width) || "-1px".equals(width); + } + private void renderRemainingComponents(LinkedList pendingCells) { for (Cell cell : pendingCells) { cell.render(); -- cgit v1.2.3 From 32e074f22a6a6f76469038bb2aa6f65a53404c30 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Tue, 26 Oct 2010 12:08:47 +0000 Subject: Rewrote [15706] svn changeset:15714/svn branch:6.4 --- src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java index beee1c4863..be47be7f4b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java @@ -411,27 +411,24 @@ public class VGridLayout extends SimplePanel implements Paintable, Container { canvas.setWidth(""); } - if (!isUndefinedHeight() && getOffsetHeight() < marginTopAndBottom) { - // Prevent a negative height value - canvas.setHeight("0px"); - return; - } - int canvasHeight; if (isUndefinedHeight()) { canvasHeight = y - spacingPixelsVertical; } else { canvasHeight = getOffsetHeight() - marginTopAndBottom; + if (canvasHeight < 0) { + canvasHeight = 0; + } } canvas.setHeight(canvasHeight + "px"); } - public boolean isUndefinedHeight() { - return "".equals(height) || "-1px".equals(height); + private boolean isUndefinedHeight() { + return "".equals(height); } - public boolean isUndefinedWidth() { - return "".equals(width) || "-1px".equals(width); + private boolean isUndefinedWidth() { + return "".equals(width); } private void renderRemainingComponents(LinkedList pendingCells) { -- cgit v1.2.3 From 5b1b98b27e151dbe16b139da624d298298585690 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Tue, 26 Oct 2010 13:34:43 +0000 Subject: Fix for #5744 svn changeset:15721/svn branch:6.4 --- src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 8ad782411d..7592839af1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -114,6 +114,14 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, */ private static final int MULTISELECT_MODE_DEFAULT = 0; + /** + * The simple multiselect mode is what the table used to have before + * ctrl/shift selections were added. That is that when this is set clicking + * on an item selects/deselects the item and no ctrl/shift selections are + * available. + */ + private static final int MULTISELECT_MODE_SIMPLE = 1; + /** * multiple of pagelength which component will cache when requesting more * rows @@ -3963,7 +3971,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, deselectAll(); } toggleSelection(); - } else if (selectMode == SELECT_MODE_SINGLE + } else if ((selectMode == SELECT_MODE_SINGLE || multiselectmode == MULTISELECT_MODE_SIMPLE) && nullSelectionAllowed) { toggleSelection(); }/* @@ -5011,12 +5019,12 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, var top = elem.offsetTop; var height = elem.offsetHeight; - if (elem.parentNode != elem.offsetParent) { + if (elem.parentNode != elem.offsetParent) { top -= elem.parentNode.offsetTop; } var cur = elem.parentNode; - while (cur && (cur.nodeType == 1)) { + while (cur && (cur.nodeType == 1)) { if (top < cur.scrollTop) { cur.scrollTop = top; } @@ -5025,7 +5033,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, } var offsetTop = cur.offsetTop; - if (cur.parentNode != cur.offsetParent) { + if (cur.parentNode != cur.offsetParent) { offsetTop -= cur.parentNode.offsetTop; } -- cgit v1.2.3 From 0f4cb1200408f7169aefc6a6ab5d54878e67e318 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Wed, 27 Oct 2010 07:16:55 +0000 Subject: Fixes #5797 by disabling keyboard navigation when Table is disabled. svn changeset:15736/svn branch:6.4 --- .../terminal/gwt/client/ui/VScrollTable.java | 30 +++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 7592839af1..dd8453c19b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -1,4 +1,4 @@ -/* +/* @ITMillApache2LicenseForJavaFiles@ */ @@ -5327,6 +5327,10 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, }; scrollingVelocityTimer.scheduleRepeating(100); } + } else if (!enabled) { + // Cancel default keyboard events on a disabled Table (prevents + // scrolling) + event.preventDefault(); } } @@ -5356,6 +5360,10 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, }; scrollingVelocityTimer.scheduleRepeating(100); } + } else if (!enabled) { + // Cancel default keyboard events on a disabled Table (prevents + // scrolling) + event.preventDefault(); } } @@ -5388,12 +5396,14 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * .dom.client.BlurEvent) */ public void onBlur(BlurEvent event) { - scrollBodyPanel.removeStyleName("focused"); - hasFocus = false; - navKeyDown = false; + if (isFocusable()) { + scrollBodyPanel.removeStyleName("focused"); + hasFocus = false; + navKeyDown = false; - // Unfocus any row - setRowFocus(null); + // Unfocus any row + setRowFocus(null); + } } /** @@ -5428,7 +5438,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * @return True if the table can be focused, else false */ public boolean isFocusable() { - if (scrollBody != null) { + if (scrollBody != null && enabled) { boolean hasVerticalScrollbars = scrollBody.getOffsetHeight() > scrollBodyPanel .getOffsetHeight(); boolean hasHorizontalScrollbars = scrollBody.getOffsetWidth() > scrollBodyPanel @@ -5445,7 +5455,9 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * @see com.vaadin.terminal.gwt.client.Focusable#focus() */ public void focus() { - scrollBodyPanel.focus(); + if (isFocusable()) { + scrollBodyPanel.focus(); + } } /** @@ -5469,7 +5481,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, public void onKeyUp(KeyUpEvent event) { int keyCode = event.getNativeKeyCode(); - if (isNavigationKey(keyCode)) { + if (isFocusable() && isNavigationKey(keyCode)) { if (keyCode == getNavigationDownKey() || keyCode == getNavigationUpKey()) { /* -- cgit v1.2.3 From 52a5925a8b0ecc64b512efae07c3ed81e1b55c81 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Wed, 27 Oct 2010 07:50:21 +0000 Subject: Fixed #5797 for the case when enabled is toggled. svn changeset:15737/svn branch:6.4 --- .../terminal/gwt/client/ui/VScrollTable.java | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index dd8453c19b..ba7664f35d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -5310,7 +5310,11 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * .gwt.event.dom.client.KeyPressEvent) */ public void onKeyPress(KeyPressEvent event) { - if (hasFocus) { + if (!enabled) { + // Cancel default keyboard events on a disabled Table (prevents + // scrolling) + event.preventDefault(); + } else if (hasFocus) { if (handleNavigation(event.getNativeEvent().getKeyCode(), event.isControlKeyDown() || event.isMetaKeyDown(), event.isShiftKeyDown())) { @@ -5327,10 +5331,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, }; scrollingVelocityTimer.scheduleRepeating(100); } - } else if (!enabled) { - // Cancel default keyboard events on a disabled Table (prevents - // scrolling) - event.preventDefault(); } } @@ -5342,7 +5342,11 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * .event.dom.client.KeyDownEvent) */ public void onKeyDown(KeyDownEvent event) { - if (hasFocus) { + if (!enabled) { + // Cancel default keyboard events on a disabled Table (prevents + // scrolling) + event.preventDefault(); + } else if (hasFocus) { if (handleNavigation(event.getNativeEvent().getKeyCode(), event.isControlKeyDown() || event.isMetaKeyDown(), event.isShiftKeyDown())) { @@ -5360,10 +5364,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, }; scrollingVelocityTimer.scheduleRepeating(100); } - } else if (!enabled) { - // Cancel default keyboard events on a disabled Table (prevents - // scrolling) - event.preventDefault(); } } @@ -5396,11 +5396,11 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * .dom.client.BlurEvent) */ public void onBlur(BlurEvent event) { - if (isFocusable()) { - scrollBodyPanel.removeStyleName("focused"); - hasFocus = false; - navKeyDown = false; + scrollBodyPanel.removeStyleName("focused"); + hasFocus = false; + navKeyDown = false; + if (isFocusable()) { // Unfocus any row setRowFocus(null); } -- cgit v1.2.3 From c2e2f0c4bf23ffaf71ffe5f64d8d2a7deecaa0cd Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Wed, 27 Oct 2010 10:32:34 +0000 Subject: Fixed #5797 so scrolling timer is removed if the Table is disabled while scrolling. svn changeset:15739/svn branch:6.4 --- src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index ba7664f35d..b1ebb763bf 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -5481,7 +5481,15 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, public void onKeyUp(KeyUpEvent event) { int keyCode = event.getNativeKeyCode(); - if (isFocusable() && isNavigationKey(keyCode)) { + + if (!isFocusable()) { + if (scrollingVelocityTimer != null) { + // Remove velocityTimer if it exists and the Table is disabled + scrollingVelocityTimer.cancel(); + scrollingVelocityTimer = null; + scrollingVelocity = 10; + } + } else if (isNavigationKey(keyCode)) { if (keyCode == getNavigationDownKey() || keyCode == getNavigationUpKey()) { /* -- cgit v1.2.3