diff options
author | Leif Åstrand <leif@vaadin.com> | 2012-02-15 09:43:30 +0200 |
---|---|---|
committer | Leif Åstrand <leif@vaadin.com> | 2012-02-15 09:43:30 +0200 |
commit | 50236af1ceffec30469f2855cd4f12e66f7f1d95 (patch) | |
tree | df704856c1d4eb64871bd9a70845e75ceaa89c90 /src | |
parent | b2bde32434c3768123f0c683403c00fdcc1364ee (diff) | |
parent | e91601dc67ee61e44f7e5e9689890073445e2bba (diff) | |
download | vaadin-framework-50236af1ceffec30469f2855cd4f12e66f7f1d95.tar.gz vaadin-framework-50236af1ceffec30469f2855cd4f12e66f7f1d95.zip |
Merge remote branch 'origin/master' into layoutperformance
Diffstat (limited to 'src')
9 files changed, 58 insertions, 66 deletions
diff --git a/src/com/vaadin/event/ListenerMethod.java b/src/com/vaadin/event/ListenerMethod.java index c11f3b1424..1f1305fa69 100644 --- a/src/com/vaadin/event/ListenerMethod.java +++ b/src/com/vaadin/event/ListenerMethod.java @@ -517,8 +517,10 @@ public class ListenerMethod implements EventListener, Serializable { } catch (final java.lang.reflect.InvocationTargetException e) { // An exception was thrown by the invocation target. Throw it // forwards. - throw new MethodException("Invocation of method " + method - + " failed.", e.getTargetException()); + throw new MethodException("Invocation of method " + + method.getName() + " in " + + target.getClass().getName() + " failed.", + e.getTargetException()); } } } @@ -617,49 +619,8 @@ public class ListenerMethod implements EventListener, Serializable { public class MethodException extends RuntimeException implements Serializable { - private final Throwable cause; - - private String message; - private MethodException(String message, Throwable cause) { - super(message); - this.cause = cause; - } - - /** - * Retrieves the cause of this throwable or <code>null</code> if the - * cause does not exist or not known. - * - * @return the cause of this throwable or <code>null</code> if the cause - * is nonexistent or unknown. - * @see java.lang.Throwable#getCause() - */ - @Override - public Throwable getCause() { - return cause; - } - - /** - * Returns the error message string of this throwable object. - * - * @return the error message. - * @see java.lang.Throwable#getMessage() - */ - @Override - public String getMessage() { - return message; - } - - /** - * @see java.lang.Throwable#toString() - */ - @Override - public String toString() { - String msg = super.toString(); - if (cause != null) { - msg += "\nCause: " + cause.toString(); - } - return msg; + super(message, cause); } } diff --git a/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml b/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml index 9bc05dee2e..3d66bab0a3 100644 --- a/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml +++ b/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml @@ -50,6 +50,13 @@ </any> </replace-with> + <!-- Fall through to this rule for everything but IE --> + <replace-with + class="com.vaadin.terminal.gwt.client.ui.VDragAndDropWrapper"> + <when-type-is + class="com.vaadin.terminal.gwt.client.ui.VDragAndDropWrapper" /> + </replace-with> + <replace-with class="com.vaadin.terminal.gwt.client.ui.VDragAndDropWrapperIE"> <when-type-is diff --git a/src/com/vaadin/terminal/gwt/client/BrowserInfo.java b/src/com/vaadin/terminal/gwt/client/BrowserInfo.java index e5006f4a9c..330e4cf5de 100644 --- a/src/com/vaadin/terminal/gwt/client/BrowserInfo.java +++ b/src/com/vaadin/terminal/gwt/client/BrowserInfo.java @@ -64,13 +64,23 @@ public class BrowserInfo { browserDetails.setIEMode(documentMode); } } - touchDevice = detectTouchDevice(); + + if (browserDetails.isChrome()) { + touchDevice = detectChromeTouchDevice(); + } else { + touchDevice = detectTouchDevice(); + } } private native boolean detectTouchDevice() /*-{ try { document.createEvent("TouchEvent");return true;} catch(e){return false;}; }-*/; + + private native boolean detectChromeTouchDevice() + /*-{ + return ("ontouchstart" in window); + }-*/; private native int getIEDocumentMode() /*-{ diff --git a/src/com/vaadin/terminal/gwt/client/Util.java b/src/com/vaadin/terminal/gwt/client/Util.java index 3f587358d9..a3604b6b63 100644 --- a/src/com/vaadin/terminal/gwt/client/Util.java +++ b/src/com/vaadin/terminal/gwt/client/Util.java @@ -1087,7 +1087,6 @@ public class Util { * button, false otherwise */ public static boolean isTouchEventOrLeftMouseButton(Event event) { - int eventType = event.getTypeInt(); boolean touchEvent = Util.isTouchEvent(event); return touchEvent || event.getButton() == Event.BUTTON_LEFT; } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java b/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java index 320520cb39..c439163595 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java @@ -71,7 +71,10 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox implements public void onBrowserEvent(Event event) { if (icon != null && (event.getTypeInt() == Event.ONCLICK) && (DOM.eventGetTarget(event) == icon.getElement())) { - setValue(!getValue()); + // Click on icon should do nothing if widget is disabled + if (isEnabled()) { + setValue(!getValue()); + } } super.onBrowserEvent(event); if (event.getTypeInt() == Event.ONLOAD) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java index b54c3dd943..0083cc83c2 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java @@ -1616,14 +1616,6 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, */ int tbWidth = Util.getRequiredWidth(tb); - if (popupWidth < 0) { - /* - * Only use the first page popup width so the textbox will not - * get resized whenever the popup is resized. - */ - popupWidth = Util.getRequiredWidth(popupOpener); - } - /* * Note: iconWidth is here calculated as a negative pixel value so * you should consider this in further calculations. @@ -1632,7 +1624,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, .measureMarginLeft(tb.getElement()) - Util.measureMarginLeft(selectedItemIcon.getElement()) : 0; - int w = tbWidth + popupWidth + iconWidth; + int w = tbWidth + getPopUpOpenerWidth() + iconWidth; /* * When the select has a undefined with we need to check that we are @@ -1669,6 +1661,20 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, } /** + * Only use the first page popup width so the textbox will not get resized + * whenever the popup is resized. This also resolves issue where toggling + * combo box between read only and normal state makes it grow larger. + * + * @return Width of popup opener + */ + private int getPopUpOpenerWidth() { + if (popupWidth < 0) { + popupWidth = Util.getRequiredWidth(popupOpener); + } + return popupWidth; + } + + /** * Get the width of the select in pixels where the text area and icon has * been included. * @@ -1686,10 +1692,10 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, */ private void setTextboxWidth(int componentWidth) { int padding = getTextboxPadding(); - int popupOpenerWidth = Util.getRequiredWidth(popupOpener); int iconWidth = selectedItemIcon.isAttached() ? Util .getRequiredWidth(selectedItemIcon) : 0; - int textboxWidth = componentWidth - padding - popupOpenerWidth + + int textboxWidth = componentWidth - padding - getPopUpOpenerWidth() - iconWidth; if (textboxWidth < 0) { textboxWidth = 0; diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index c15aade66e..07d9de5f20 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -272,9 +272,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets, int endOfFirstRange = row.getIndex() - 1; if (!(endOfFirstRange - startRow.getIndex() < 0)) { // create range of first part unless its length is < 1 - VScrollTableRow endOfRange = scrollBody - .getRowByRowIndex(endOfFirstRange); - ranges.add(new SelectionRange(startRow, endOfRange)); + ranges.add(new SelectionRange(startRow, endOfFirstRange + - startRow.getIndex() + 1)); } int startOfSecondRange = row.getIndex() + 1; if (!(getEndIndex() - startOfSecondRange < 0)) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java b/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java index 61fd389200..85b6e1b2e8 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java @@ -314,13 +314,16 @@ public class VTabsheet extends VTabsheetBase { } public Tab addTab() { + // Must check this before insert as insert updates the tab count + boolean firstTab = (getTabCount() == 0); + Tab t = new Tab(this); // Logical attach int spacerIndex = getTabCount(); insert(t, tr, spacerIndex, true); - if (getTabCount() == 0) { + if (firstTab) { // Set the "first" style t.setStyleNames(false, true); } diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java index 86f2c7a2de..705bf13346 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java @@ -1234,12 +1234,16 @@ public abstract class AbstractCommunicationManager implements try { changeVariables(source, owner, m); } catch (Exception e) { + Component errorComponent = null; if (owner instanceof Component) { - handleChangeVariablesError(app, (Component) owner, e, m); - } else { - // TODO DragDropService error handling - throw new RuntimeException(e); + errorComponent = (Component) owner; + } else if (owner instanceof DragAndDropService) { + if (m.get("dhowner") instanceof Component) { + errorComponent = (Component) m.get("dhowner"); + } } + + handleChangeVariablesError(app, errorComponent, e, m); } } else { |