@qooxdoo/framework 7.0.0-beta.5 → 7.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -6
- package/Manifest.json +1 -1
- package/README.md +9 -3
- package/lib/compiler/compile-info.json +50 -48
- package/lib/compiler/index.js +6948 -4175
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
- package/lib/resource/qx/tool/loadsass.js +16 -13
- package/lib/resource/qx/tool/schema/compile-1-0-0.json +13 -13
- package/lib/resource/qx/tool/website/build/assets/bluebird.min.js +4593 -9
- package/lib/resource/qx/tool/website/build/assets/buttons.js +391 -1
- package/lib/resource/qx/tool/website/build/assets/fontawesome-all.js +8963 -1
- package/lib/resource/qx/tool/website/build/assets/jquery.js +5452 -3
- package/lib/resource/qx/tool/website/build/diagnostics/dependson.js +31 -31
- package/lib/resource/qx/tool/website/build/diagnostics/requiredby.js +32 -36
- package/lib/resource/qx/tool/website/build/scripts/serve.js +87 -66
- package/lib/resource/qx/tool/website/src/assets/bluebird.min.js +4593 -9
- package/lib/resource/qx/tool/website/src/assets/buttons.js +391 -1
- package/lib/resource/qx/tool/website/src/assets/fontawesome-all.js +8963 -1
- package/lib/resource/qx/tool/website/src/assets/jquery.js +5452 -3
- package/lib/resource/qx/tool/website/src/diagnostics/dependson.js +31 -31
- package/lib/resource/qx/tool/website/src/diagnostics/requiredby.js +32 -36
- package/lib/resource/qx/tool/website/src/scripts/serve.js +87 -66
- package/npm-shrinkwrap.json +7293 -0
- package/package.json +19 -4
- package/source/class/q.js +4 -2
- package/source/class/qx/Annotation.js +48 -57
- package/source/class/qx/Bootstrap.js +206 -207
- package/source/class/qx/Class.js +602 -504
- package/source/class/qx/Interface.js +169 -137
- package/source/class/qx/Mixin.js +156 -120
- package/source/class/qx/Part.js +48 -77
- package/source/class/qx/Promise.js +5891 -4655
- package/source/class/qx/Theme.js +200 -134
- package/source/class/qx/__init__.js +8 -8
- package/source/class/qx/application/AbstractGui.js +20 -32
- package/source/class/qx/application/Basic.js +9 -18
- package/source/class/qx/application/IApplication.js +6 -10
- package/source/class/qx/application/Inline.js +4 -7
- package/source/class/qx/application/Mobile.js +22 -45
- package/source/class/qx/application/Native.js +8 -19
- package/source/class/qx/application/Routing.js +88 -114
- package/source/class/qx/application/Standalone.js +4 -9
- package/source/class/qx/application/__init__.js +1 -1
- package/source/class/qx/bom/AnimationFrame.js +26 -25
- package/source/class/qx/bom/Blocker.js +92 -100
- package/source/class/qx/bom/Cookie.js +18 -22
- package/source/class/qx/bom/Document.js +24 -31
- package/source/class/qx/bom/Element.js +65 -51
- package/source/class/qx/bom/Event.js +68 -78
- package/source/class/qx/bom/FileReader.js +110 -115
- package/source/class/qx/bom/Font.js +82 -122
- package/source/class/qx/bom/FullScreen.js +32 -41
- package/source/class/qx/bom/GeoLocation.js +39 -44
- package/source/class/qx/bom/HashHistory.js +58 -64
- package/source/class/qx/bom/History.js +61 -89
- package/source/class/qx/bom/Html.js +75 -71
- package/source/class/qx/bom/IdleCallback.js +20 -23
- package/source/class/qx/bom/Iframe.js +37 -69
- package/source/class/qx/bom/IframeHistory.js +83 -88
- package/source/class/qx/bom/Input.js +50 -66
- package/source/class/qx/bom/Label.js +65 -86
- package/source/class/qx/bom/Lifecycle.js +7 -9
- package/source/class/qx/bom/MediaQuery.js +324 -307
- package/source/class/qx/bom/NativeHistory.js +51 -46
- package/source/class/qx/bom/Notification.js +41 -47
- package/source/class/qx/bom/PageVisibility.js +19 -25
- package/source/class/qx/bom/Range.js +20 -30
- package/source/class/qx/bom/Selection.js +163 -172
- package/source/class/qx/bom/Selector.js +2401 -2181
- package/source/class/qx/bom/Shortcut.js +103 -129
- package/source/class/qx/bom/Storage.js +9 -8
- package/source/class/qx/bom/String.js +285 -290
- package/source/class/qx/bom/Style.js +30 -31
- package/source/class/qx/bom/Stylesheet.js +36 -60
- package/source/class/qx/bom/Template.js +730 -657
- package/source/class/qx/bom/Viewport.js +40 -46
- package/source/class/qx/bom/Vml.js +43 -28
- package/source/class/qx/bom/WebWorker.js +61 -50
- package/source/class/qx/bom/Window.js +88 -105
- package/source/class/qx/bom/__init__.js +11 -11
- package/source/class/qx/bom/client/Browser.js +45 -47
- package/source/class/qx/bom/client/Css.js +85 -85
- package/source/class/qx/bom/client/CssAnimation.js +41 -49
- package/source/class/qx/bom/client/CssTransform.js +21 -29
- package/source/class/qx/bom/client/CssTransition.js +9 -12
- package/source/class/qx/bom/client/Device.js +45 -45
- package/source/class/qx/bom/client/EcmaScript.js +153 -96
- package/source/class/qx/bom/client/Engine.js +38 -35
- package/source/class/qx/bom/client/Event.js +75 -63
- package/source/class/qx/bom/client/Html.js +97 -97
- package/source/class/qx/bom/client/Idle.js +4 -6
- package/source/class/qx/bom/client/Locale.js +15 -15
- package/source/class/qx/bom/client/OperatingSystem.js +89 -106
- package/source/class/qx/bom/client/Pdfjs.js +1364 -1067
- package/source/class/qx/bom/client/PhoneGap.js +6 -9
- package/source/class/qx/bom/client/Plugin.js +93 -97
- package/source/class/qx/bom/client/Runtime.js +14 -12
- package/source/class/qx/bom/client/Scroll.js +20 -16
- package/source/class/qx/bom/client/Stylesheet.js +44 -32
- package/source/class/qx/bom/client/Transport.js +38 -41
- package/source/class/qx/bom/client/Xml.js +39 -41
- package/source/class/qx/bom/client/__init__.js +4 -4
- package/source/class/qx/bom/element/Animation.js +15 -12
- package/source/class/qx/bom/element/AnimationCss.js +95 -64
- package/source/class/qx/bom/element/AnimationHandle.js +22 -29
- package/source/class/qx/bom/element/AnimationJs.js +94 -71
- package/source/class/qx/bom/element/Attribute.js +119 -134
- package/source/class/qx/bom/element/Background.js +35 -35
- package/source/class/qx/bom/element/BoxSizing.js +43 -44
- package/source/class/qx/bom/element/Class.js +50 -72
- package/source/class/qx/bom/element/Clip.js +36 -60
- package/source/class/qx/bom/element/Cursor.js +13 -20
- package/source/class/qx/bom/element/Dataset.js +33 -31
- package/source/class/qx/bom/element/Decoration.js +178 -168
- package/source/class/qx/bom/element/Dimension.js +78 -60
- package/source/class/qx/bom/element/Location.js +87 -94
- package/source/class/qx/bom/element/Opacity.js +42 -44
- package/source/class/qx/bom/element/Scroll.js +78 -88
- package/source/class/qx/bom/element/Style.js +61 -101
- package/source/class/qx/bom/element/Transform.js +38 -56
- package/source/class/qx/bom/element/__init__.js +4 -4
- package/source/class/qx/bom/media/Abstract.js +136 -143
- package/source/class/qx/bom/media/Audio.js +7 -12
- package/source/class/qx/bom/media/Video.js +15 -27
- package/source/class/qx/bom/request/IRequest.js +18 -21
- package/source/class/qx/bom/request/Jsonp.js +34 -39
- package/source/class/qx/bom/request/Script.js +94 -90
- package/source/class/qx/bom/request/SimpleXhr.js +111 -79
- package/source/class/qx/bom/request/Xhr.js +196 -143
- package/source/class/qx/bom/request/__init__.js +1 -1
- package/source/class/qx/bom/rest/Resource.js +269 -203
- package/source/class/qx/bom/storage/Memory.js +18 -29
- package/source/class/qx/bom/storage/UserData.js +28 -35
- package/source/class/qx/bom/storage/Web.js +19 -30
- package/source/class/qx/bom/webfonts/Manager.js +199 -130
- package/source/class/qx/bom/webfonts/Validator.js +84 -118
- package/source/class/qx/bom/webfonts/WebFont.js +24 -28
- package/source/class/qx/bom/webfonts/__init__.js +1 -1
- package/source/class/qx/core/Aspect.js +15 -22
- package/source/class/qx/core/Assert.js +391 -333
- package/source/class/qx/core/AssertionError.js +6 -15
- package/source/class/qx/core/BaseInit.js +25 -28
- package/source/class/qx/core/Environment.js +72 -86
- package/source/class/qx/core/GlobalError.js +12 -20
- package/source/class/qx/core/IDisposable.js +6 -9
- package/source/class/qx/core/Id.js +25 -15
- package/source/class/qx/core/Init.js +20 -20
- package/source/class/qx/core/MAssert.js +54 -97
- package/source/class/qx/core/MBindTo.js +10 -14
- package/source/class/qx/core/MEvent.js +76 -65
- package/source/class/qx/core/MLogging.js +9 -18
- package/source/class/qx/core/MObjectId.js +104 -65
- package/source/class/qx/core/MProperty.js +18 -34
- package/source/class/qx/core/Object.js +93 -122
- package/source/class/qx/core/ObjectRegistry.js +58 -81
- package/source/class/qx/core/Property.js +974 -780
- package/source/class/qx/core/ValidationError.js +3 -4
- package/source/class/qx/core/WindowError.js +13 -24
- package/source/class/qx/core/Wrapper.js +8 -9
- package/source/class/qx/data/Array.js +178 -191
- package/source/class/qx/data/Conversion.js +11 -18
- package/source/class/qx/data/IListData.js +11 -20
- package/source/class/qx/data/MBinding.js +31 -26
- package/source/class/qx/data/SingleValueBinding.js +491 -225
- package/source/class/qx/data/__init__.js +1 -1
- package/source/class/qx/data/controller/CheckedList.js +82 -54
- package/source/class/qx/data/controller/Form.js +81 -69
- package/source/class/qx/data/controller/IControllerDelegate.js +7 -12
- package/source/class/qx/data/controller/ISelection.js +6 -10
- package/source/class/qx/data/controller/List.js +151 -167
- package/source/class/qx/data/controller/MSelection.js +53 -72
- package/source/class/qx/data/controller/Object.js +106 -77
- package/source/class/qx/data/controller/Tree.js +164 -142
- package/source/class/qx/data/controller/__init__.js +1 -1
- package/source/class/qx/data/controller/website/List.js +34 -43
- package/source/class/qx/data/controller/website/__init__.js +2 -2
- package/source/class/qx/data/marshal/IMarshaler.js +4 -7
- package/source/class/qx/data/marshal/IMarshalerDelegate.js +10 -18
- package/source/class/qx/data/marshal/Json.js +112 -85
- package/source/class/qx/data/marshal/MEventBubbling.js +44 -42
- package/source/class/qx/data/marshal/__init__.js +1 -1
- package/source/class/qx/data/store/IStoreDelegate.js +6 -9
- package/source/class/qx/data/store/Json.js +71 -85
- package/source/class/qx/data/store/Jsonp.js +19 -25
- package/source/class/qx/data/store/Offline.js +21 -29
- package/source/class/qx/data/store/Rest.js +25 -23
- package/source/class/qx/data/store/__init__.js +1 -1
- package/source/class/qx/dev/Debug.js +105 -124
- package/source/class/qx/dev/FakeServer.js +68 -65
- package/source/class/qx/dev/ObjectSummary.js +33 -39
- package/source/class/qx/dev/Profile.js +62 -63
- package/source/class/qx/dev/StackTrace.js +64 -70
- package/source/class/qx/dev/Tokenizer.js +114 -126
- package/source/class/qx/dev/unit/AbstractTestSuite.js +17 -31
- package/source/class/qx/dev/unit/AsyncWrapper.js +22 -26
- package/source/class/qx/dev/unit/JsUnitTestResult.js +9 -21
- package/source/class/qx/dev/unit/MMeasure.js +46 -37
- package/source/class/qx/dev/unit/MMock.js +236 -240
- package/source/class/qx/dev/unit/MRequirements.js +53 -79
- package/source/class/qx/dev/unit/MRequirementsBasic.js +24 -19
- package/source/class/qx/dev/unit/MTestLoader.js +52 -57
- package/source/class/qx/dev/unit/MeasurementResult.js +18 -22
- package/source/class/qx/dev/unit/RequirementError.js +8 -17
- package/source/class/qx/dev/unit/Sinon.js +18826 -4613
- package/source/class/qx/dev/unit/TestCase.js +40 -51
- package/source/class/qx/dev/unit/TestClass.js +22 -23
- package/source/class/qx/dev/unit/TestFunction.js +28 -48
- package/source/class/qx/dev/unit/TestLoader.js +11 -14
- package/source/class/qx/dev/unit/TestLoaderBasic.js +3 -6
- package/source/class/qx/dev/unit/TestLoaderInline.js +8 -14
- package/source/class/qx/dev/unit/TestLoaderMobile.js +8 -14
- package/source/class/qx/dev/unit/TestLoaderNative.js +7 -13
- package/source/class/qx/dev/unit/TestResult.js +140 -118
- package/source/class/qx/dev/unit/TestSuite.js +46 -55
- package/source/class/qx/dom/Element.js +29 -74
- package/source/class/qx/dom/Hierarchy.js +60 -95
- package/source/class/qx/dom/Node.js +54 -81
- package/source/class/qx/dom/__init__.js +9 -9
- package/source/class/qx/event/AcceleratingTimer.js +28 -46
- package/source/class/qx/event/Emitter.js +54 -49
- package/source/class/qx/event/GlobalError.js +22 -38
- package/source/class/qx/event/IEventDispatcher.js +4 -9
- package/source/class/qx/event/IEventHandler.js +7 -13
- package/source/class/qx/event/Idle.js +32 -47
- package/source/class/qx/event/Manager.js +222 -237
- package/source/class/qx/event/Messaging.js +55 -48
- package/source/class/qx/event/Pool.js +5 -8
- package/source/class/qx/event/Registration.js +128 -118
- package/source/class/qx/event/Timer.js +50 -96
- package/source/class/qx/event/Utils.js +41 -28
- package/source/class/qx/event/dispatch/AbstractBubbling.js +133 -93
- package/source/class/qx/event/dispatch/Direct.js +46 -51
- package/source/class/qx/event/dispatch/DomBubbling.js +8 -15
- package/source/class/qx/event/dispatch/MouseCapture.js +74 -91
- package/source/class/qx/event/handler/Appear.js +40 -77
- package/source/class/qx/event/handler/Application.js +100 -126
- package/source/class/qx/event/handler/Capture.js +15 -37
- package/source/class/qx/event/handler/DragDrop.js +342 -228
- package/source/class/qx/event/handler/Element.js +45 -72
- package/source/class/qx/event/handler/ElementResize.js +35 -70
- package/source/class/qx/event/handler/Focus.js +908 -637
- package/source/class/qx/event/handler/Gesture.js +144 -93
- package/source/class/qx/event/handler/GestureCore.js +214 -163
- package/source/class/qx/event/handler/Iframe.js +21 -35
- package/source/class/qx/event/handler/Input.js +332 -209
- package/source/class/qx/event/handler/Keyboard.js +325 -270
- package/source/class/qx/event/handler/Mouse.js +212 -173
- package/source/class/qx/event/handler/Object.js +13 -31
- package/source/class/qx/event/handler/Offline.js +52 -67
- package/source/class/qx/event/handler/Orientation.js +56 -62
- package/source/class/qx/event/handler/OrientationCore.js +33 -43
- package/source/class/qx/event/handler/Pointer.js +84 -72
- package/source/class/qx/event/handler/PointerCore.js +183 -105
- package/source/class/qx/event/handler/Touch.js +43 -59
- package/source/class/qx/event/handler/TouchCore.js +159 -120
- package/source/class/qx/event/handler/Transition.js +91 -100
- package/source/class/qx/event/handler/UserAction.js +18 -42
- package/source/class/qx/event/handler/Video.js +12 -12
- package/source/class/qx/event/handler/Window.js +53 -69
- package/source/class/qx/event/message/Bus.js +109 -128
- package/source/class/qx/event/message/Message.js +14 -29
- package/source/class/qx/event/type/Data.js +11 -22
- package/source/class/qx/event/type/Dom.js +37 -52
- package/source/class/qx/event/type/Drag.js +37 -56
- package/source/class/qx/event/type/Event.js +80 -104
- package/source/class/qx/event/type/Focus.js +5 -8
- package/source/class/qx/event/type/GeoPosition.js +32 -41
- package/source/class/qx/event/type/KeyInput.js +9 -19
- package/source/class/qx/event/type/KeySequence.js +10 -21
- package/source/class/qx/event/type/Mouse.js +69 -72
- package/source/class/qx/event/type/MouseWheel.js +5 -9
- package/source/class/qx/event/type/Native.js +16 -27
- package/source/class/qx/event/type/Orientation.js +18 -30
- package/source/class/qx/event/type/Pinch.js +21 -27
- package/source/class/qx/event/type/Pointer.js +38 -41
- package/source/class/qx/event/type/Rest.js +7 -10
- package/source/class/qx/event/type/Roll.js +49 -58
- package/source/class/qx/event/type/Rotate.js +21 -27
- package/source/class/qx/event/type/Swipe.js +75 -86
- package/source/class/qx/event/type/Tap.js +2 -4
- package/source/class/qx/event/type/Touch.js +262 -286
- package/source/class/qx/event/type/Track.js +23 -28
- package/source/class/qx/event/type/dom/Custom.js +24 -20
- package/source/class/qx/event/type/dom/Pointer.js +86 -60
- package/source/class/qx/event/util/Keyboard.js +94 -106
- package/source/class/qx/html/Blocker.js +17 -18
- package/source/class/qx/html/Canvas.js +13 -29
- package/source/class/qx/html/Element.js +372 -497
- package/source/class/qx/html/Factory.js +31 -26
- package/source/class/qx/html/Iframe.js +35 -69
- package/source/class/qx/html/Image.js +43 -55
- package/source/class/qx/html/Input.js +44 -57
- package/source/class/qx/html/Jsx.js +49 -41
- package/source/class/qx/html/JsxRef.js +3 -5
- package/source/class/qx/html/Label.js +20 -32
- package/source/class/qx/html/Node.js +362 -422
- package/source/class/qx/html/Root.js +7 -16
- package/source/class/qx/html/Text.js +34 -27
- package/source/class/qx/io/ImageLoader.js +66 -90
- package/source/class/qx/io/PartLoader.js +17 -30
- package/source/class/qx/io/__init__.js +5 -3
- package/source/class/qx/io/exception/Cancel.js +33 -0
- package/source/class/qx/io/exception/Exception.js +37 -0
- package/source/class/qx/io/exception/Protocol.js +25 -0
- package/source/class/qx/io/exception/Transport.js +38 -0
- package/source/class/qx/io/exception/__init__.js +4 -0
- package/source/class/qx/io/graphql/Client.js +122 -0
- package/source/class/qx/io/graphql/__init__.js +9 -0
- package/source/class/qx/io/graphql/protocol/Message.js +65 -0
- package/source/class/qx/io/graphql/protocol/Request.js +93 -0
- package/source/class/qx/io/graphql/protocol/Response.js +63 -0
- package/source/class/qx/io/graphql/protocol/__init__.js +6 -0
- package/source/class/qx/io/jsonrpc/Client.js +355 -0
- package/source/class/qx/io/jsonrpc/__init__.js +15 -0
- package/source/class/qx/io/jsonrpc/protocol/Batch.js +103 -0
- package/source/class/qx/io/jsonrpc/protocol/Error.js +65 -0
- package/source/class/qx/io/jsonrpc/protocol/Message.js +48 -0
- package/source/class/qx/io/jsonrpc/protocol/Notification.js +47 -0
- package/source/class/qx/io/jsonrpc/protocol/Parser.js +105 -0
- package/source/class/qx/io/jsonrpc/protocol/Request.js +94 -0
- package/source/class/qx/io/jsonrpc/protocol/Result.js +49 -0
- package/source/class/qx/io/jsonrpc/protocol/__init__.js +5 -0
- package/source/class/qx/io/part/ClosurePart.js +16 -35
- package/source/class/qx/io/part/Package.js +35 -63
- package/source/class/qx/io/part/Part.js +29 -53
- package/source/class/qx/io/part/__init__.js +4 -4
- package/source/class/qx/io/request/AbstractRequest.js +268 -201
- package/source/class/qx/io/request/Jsonp.js +16 -19
- package/source/class/qx/io/request/Xhr.js +38 -37
- package/source/class/qx/io/request/__init__.js +1 -1
- package/source/class/qx/io/request/authentication/Basic.js +7 -13
- package/source/class/qx/io/request/authentication/Bearer.js +46 -0
- package/source/class/qx/io/request/authentication/IAuthentication.js +3 -6
- package/source/class/qx/io/request/authentication/__init__.js +1 -1
- package/source/class/qx/io/rest/Resource.js +122 -90
- package/source/class/qx/io/transport/AbstractClient.js +121 -0
- package/source/class/qx/io/transport/AbstractTransport.js +40 -0
- package/source/class/qx/io/transport/Fetch.js +98 -0
- package/source/class/qx/io/transport/ITransport.js +42 -0
- package/source/class/qx/io/transport/PostMessage.js +54 -0
- package/source/class/qx/io/transport/Websocket.js +97 -0
- package/source/class/qx/io/transport/Xhr.js +138 -0
- package/source/class/qx/io/transport/__init__.js +18 -0
- package/source/class/qx/lang/Array.js +133 -170
- package/source/class/qx/lang/Function.js +101 -104
- package/source/class/qx/lang/Json.js +1041 -774
- package/source/class/qx/lang/Number.js +11 -16
- package/source/class/qx/lang/Object.js +129 -100
- package/source/class/qx/lang/String.js +86 -94
- package/source/class/qx/lang/Type.js +44 -65
- package/source/class/qx/lang/normalize/Array.js +39 -49
- package/source/class/qx/lang/normalize/Date.js +50 -32
- package/source/class/qx/lang/normalize/Error.js +4 -7
- package/source/class/qx/lang/normalize/Function.js +11 -19
- package/source/class/qx/lang/normalize/Number.js +3 -5
- package/source/class/qx/lang/normalize/Object.js +17 -18
- package/source/class/qx/lang/normalize/String.js +39 -40
- package/source/class/qx/locale/Date.js +175 -178
- package/source/class/qx/locale/Key.js +13 -11
- package/source/class/qx/locale/LocalizedString.js +18 -15
- package/source/class/qx/locale/MTranslation.js +22 -23
- package/source/class/qx/locale/Manager.js +62 -100
- package/source/class/qx/locale/Number.js +20 -12
- package/source/class/qx/locale/String.js +26 -15
- package/source/class/qx/log/Logger.js +128 -180
- package/source/class/qx/log/__init__.js +3 -3
- package/source/class/qx/log/appender/Console.js +100 -111
- package/source/class/qx/log/appender/Element.js +25 -39
- package/source/class/qx/log/appender/Formatter.js +117 -66
- package/source/class/qx/log/appender/Native.js +4 -10
- package/source/class/qx/log/appender/NodeConsole.js +20 -28
- package/source/class/qx/log/appender/PhoneGap.js +5 -13
- package/source/class/qx/log/appender/RhinoConsole.js +12 -23
- package/source/class/qx/log/appender/RhinoFile.js +19 -26
- package/source/class/qx/log/appender/RingBuffer.js +10 -19
- package/source/class/qx/log/appender/Util.js +11 -9
- package/source/class/qx/module/Animation.js +73 -63
- package/source/class/qx/module/Attribute.js +27 -46
- package/source/class/qx/module/Blocker.js +33 -41
- package/source/class/qx/module/Cookie.js +6 -10
- package/source/class/qx/module/Css.js +82 -97
- package/source/class/qx/module/Dataset.js +12 -24
- package/source/class/qx/module/Environment.js +4 -6
- package/source/class/qx/module/Event.js +124 -127
- package/source/class/qx/module/Io.js +5 -9
- package/source/class/qx/module/Manipulating.js +98 -117
- package/source/class/qx/module/MatchMedia.js +50 -24
- package/source/class/qx/module/Messaging.js +6 -10
- package/source/class/qx/module/Placeholder.js +54 -44
- package/source/class/qx/module/Placement.js +33 -33
- package/source/class/qx/module/Rest.js +3 -4
- package/source/class/qx/module/Storage.js +34 -48
- package/source/class/qx/module/Template.js +6 -9
- package/source/class/qx/module/TextSelection.js +13 -21
- package/source/class/qx/module/Transform.js +28 -45
- package/source/class/qx/module/Traversing.js +160 -154
- package/source/class/qx/module/__init__.js +1 -1
- package/source/class/qx/module/dev/FakeServer.js +19 -25
- package/source/class/qx/module/event/GestureHandler.js +25 -13
- package/source/class/qx/module/event/Keyboard.js +42 -31
- package/source/class/qx/module/event/Mouse.js +48 -46
- package/source/class/qx/module/event/Native.js +18 -30
- package/source/class/qx/module/event/Orientation.js +11 -18
- package/source/class/qx/module/event/OrientationHandler.js +19 -17
- package/source/class/qx/module/event/Pinch.js +13 -14
- package/source/class/qx/module/event/Pointer.js +22 -22
- package/source/class/qx/module/event/PointerHandler.js +14 -11
- package/source/class/qx/module/event/Rotate.js +13 -14
- package/source/class/qx/module/event/Swipe.js +18 -24
- package/source/class/qx/module/event/Tap.js +25 -25
- package/source/class/qx/module/event/Touch.js +4 -7
- package/source/class/qx/module/event/TouchHandler.js +16 -16
- package/source/class/qx/module/event/Track.js +13 -14
- package/source/class/qx/module/util/Array.js +30 -41
- package/source/class/qx/module/util/Function.js +1 -2
- package/source/class/qx/module/util/Object.js +8 -11
- package/source/class/qx/module/util/String.js +10 -18
- package/source/class/qx/module/util/Type.js +3 -4
- package/source/class/qx/test/Annotation.js +195 -89
- package/source/class/qx/test/Bootstrap.js +98 -124
- package/source/class/qx/test/Browser.js +8 -11
- package/source/class/qx/test/Class.js +164 -198
- package/source/class/qx/test/Dom.js +10 -28
- package/source/class/qx/test/EditDistance.js +16 -16
- package/source/class/qx/test/Interface.js +380 -383
- package/source/class/qx/test/MAppearance.js +10 -14
- package/source/class/qx/test/MDecoration.js +1 -3
- package/source/class/qx/test/Mixin.js +418 -173
- package/source/class/qx/test/Promise.js +422 -333
- package/source/class/qx/test/Theme.js +204 -179
- package/source/class/qx/test/Xml.js +155 -84
- package/source/class/qx/test/application/Routing.js +45 -44
- package/source/class/qx/test/bom/AnimationFrame.js +23 -21
- package/source/class/qx/test/bom/Attribute.js +66 -47
- package/source/class/qx/test/bom/Basic.js +52 -27
- package/source/class/qx/test/bom/Blocker.js +100 -70
- package/source/class/qx/test/bom/Class.js +19 -34
- package/source/class/qx/test/bom/Cookie.js +49 -28
- package/source/class/qx/test/bom/Dataset.js +12 -24
- package/source/class/qx/test/bom/Element.js +55 -47
- package/source/class/qx/test/bom/Event.js +68 -45
- package/source/class/qx/test/bom/FileReader.js +6 -12
- package/source/class/qx/test/bom/Font.js +256 -118
- package/source/class/qx/test/bom/GeoLocation.js +82 -64
- package/source/class/qx/test/bom/History.js +63 -84
- package/source/class/qx/test/bom/IdleCallback.js +51 -38
- package/source/class/qx/test/bom/Iframe.js +14 -18
- package/source/class/qx/test/bom/Label.js +74 -105
- package/source/class/qx/test/bom/Location.js +70 -99
- package/source/class/qx/test/bom/PageVisibility.js +13 -16
- package/source/class/qx/test/bom/Selector.js +16 -16
- package/source/class/qx/test/bom/String.js +19 -15
- package/source/class/qx/test/bom/Stylesheet.js +39 -48
- package/source/class/qx/test/bom/Template.js +49 -57
- package/source/class/qx/test/bom/Viewport.js +7 -11
- package/source/class/qx/test/bom/WebWorker.js +49 -37
- package/source/class/qx/test/bom/Window.js +6 -12
- package/source/class/qx/test/bom/client/Css.js +26 -19
- package/source/class/qx/test/bom/client/Device.js +29 -18
- package/source/class/qx/test/bom/client/OperatingSystem.js +17 -20
- package/source/class/qx/test/bom/client/Pdfjs.js +15 -13
- package/source/class/qx/test/bom/element/AnimationHandle.js +20 -17
- package/source/class/qx/test/bom/element/AnimationJs.js +48 -31
- package/source/class/qx/test/bom/element/Background.js +93 -46
- package/source/class/qx/test/bom/element/BoxSizing.js +66 -61
- package/source/class/qx/test/bom/element/Class.js +33 -58
- package/source/class/qx/test/bom/element/Dimension.js +58 -37
- package/source/class/qx/test/bom/element/Style.js +87 -83
- package/source/class/qx/test/bom/element/Transform.js +209 -86
- package/source/class/qx/test/bom/media/Audio.js +18 -14
- package/source/class/qx/test/bom/media/MediaTestCase.js +61 -66
- package/source/class/qx/test/bom/media/Video.js +39 -28
- package/source/class/qx/test/bom/request/Jsonp.js +60 -57
- package/source/class/qx/test/bom/request/Script.js +150 -138
- package/source/class/qx/test/bom/request/SimpleXhr.js +206 -134
- package/source/class/qx/test/bom/request/Xhr.js +179 -132
- package/source/class/qx/test/bom/request/XhrWithRemote.js +206 -160
- package/source/class/qx/test/bom/rest/Resource.js +345 -281
- package/source/class/qx/test/bom/rest/ResourceWithRemote.js +74 -57
- package/source/class/qx/test/bom/storage/Local.js +3 -4
- package/source/class/qx/test/bom/storage/Session.js +3 -4
- package/source/class/qx/test/bom/storage/WebStorageTestCase.js +28 -27
- package/source/class/qx/test/bom/webfonts/Abstract.js +8 -10
- package/source/class/qx/test/bom/webfonts/Manager.js +127 -80
- package/source/class/qx/test/bom/webfonts/Validator.js +36 -30
- package/source/class/qx/test/compiler/ClassFile.js +29 -11
- package/source/class/qx/test/compiler/jsdoc/Parser.js +122 -96
- package/source/class/qx/test/core/Assert.js +151 -86
- package/source/class/qx/test/core/Environment.js +162 -123
- package/source/class/qx/test/core/EventEmitterDummy.js +7 -8
- package/source/class/qx/test/core/InheritanceDummy.js +23 -33
- package/source/class/qx/test/core/MemoryManagement.js +13 -5
- package/source/class/qx/test/core/Object.js +106 -112
- package/source/class/qx/test/core/ObjectId.js +7 -6
- package/source/class/qx/test/core/Property.js +483 -387
- package/source/class/qx/test/core/PropertyHelper.js +49 -64
- package/source/class/qx/test/core/Target.js +9 -13
- package/source/class/qx/test/core/Validation.js +409 -136
- package/source/class/qx/test/data/DataArray.js +1059 -394
- package/source/class/qx/test/data/DataArrayWithChangeBubble.js +315 -172
- package/source/class/qx/test/data/__init__.js +4 -4
- package/source/class/qx/test/data/controller/Form.js +141 -99
- package/source/class/qx/test/data/controller/FormWithArrayAndModel.js +66 -51
- package/source/class/qx/test/data/controller/List.js +644 -336
- package/source/class/qx/test/data/controller/ListReverse.js +64 -63
- package/source/class/qx/test/data/controller/ListWithObjects.js +305 -149
- package/source/class/qx/test/data/controller/Object.js +252 -94
- package/source/class/qx/test/data/controller/Tree.js +1219 -383
- package/source/class/qx/test/data/controller/__init__.js +4 -4
- package/source/class/qx/test/data/marshal/Json.js +832 -447
- package/source/class/qx/test/data/marshal/__init__.js +4 -4
- package/source/class/qx/test/data/singlevalue/Array.js +383 -144
- package/source/class/qx/test/data/singlevalue/Deep.js +361 -175
- package/source/class/qx/test/data/singlevalue/Resolve.js +51 -29
- package/source/class/qx/test/data/singlevalue/Simple.js +530 -208
- package/source/class/qx/test/data/singlevalue/TextFieldDummy.js +32 -28
- package/source/class/qx/test/data/singlevalue/__init__.js +4 -4
- package/source/class/qx/test/data/store/Json.js +574 -313
- package/source/class/qx/test/data/store/Jsonp.js +103 -77
- package/source/class/qx/test/data/store/Offline.js +127 -110
- package/source/class/qx/test/data/store/Rest.js +58 -52
- package/source/class/qx/test/data/store/RestWithRemote.js +36 -30
- package/source/class/qx/test/data/store/__init__.js +4 -4
- package/source/class/qx/test/dev/Debug.js +9 -13
- package/source/class/qx/test/dev/StackTrace.js +51 -42
- package/source/class/qx/test/dev/unit/Requirements.js +36 -49
- package/source/class/qx/test/dev/unit/Sinon.js +85 -73
- package/source/class/qx/test/dev/unit/TestCase.js +12 -17
- package/source/class/qx/test/dom/Element.js +17 -12
- package/source/class/qx/test/dom/Hierarchy.js +53 -38
- package/source/class/qx/test/dom/Node.js +97 -43
- package/source/class/qx/test/event/Bubbling.js +258 -88
- package/source/class/qx/test/event/Emitter.js +38 -39
- package/source/class/qx/test/event/GlobalError.js +59 -87
- package/source/class/qx/test/event/GlobalEventMonitors.js +22 -25
- package/source/class/qx/test/event/Messaging.js +66 -49
- package/source/class/qx/test/event/MockBubblingHandler.js +10 -15
- package/source/class/qx/test/event/MockHandler.js +14 -33
- package/source/class/qx/test/event/Registration.js +38 -32
- package/source/class/qx/test/event/Timer.js +61 -39
- package/source/class/qx/test/event/Utils.js +164 -123
- package/source/class/qx/test/event/dispatch/MouseCapture.js +61 -51
- package/source/class/qx/test/event/dispatch/MouseEventOnDocument.js +22 -23
- package/source/class/qx/test/event/dispatch/TestingHandler.js +8 -10
- package/source/class/qx/test/event/dispatch/TestingWindow.js +9 -13
- package/source/class/qx/test/event/dispatch/__init__.js +4 -4
- package/source/class/qx/test/event/handler/Offline.js +7 -8
- package/source/class/qx/test/event/message/Bus.js +112 -72
- package/source/class/qx/test/event/message/__init__.js +4 -4
- package/source/class/qx/test/event/type/Dom.js +12 -11
- package/source/class/qx/test/event/type/Event.js +7 -16
- package/source/class/qx/test/event/type/Mouse.js +12 -11
- package/source/class/qx/test/event/type/Native.js +12 -11
- package/source/class/qx/test/event/type/__init__.js +4 -4
- package/source/class/qx/test/event/util/Keyboard.js +4 -3
- package/source/class/qx/test/html/Element.js +538 -239
- package/source/class/qx/test/html/Iframe.js +85 -73
- package/source/class/qx/test/html/jsx/TestJsx.js +15 -4
- package/source/class/qx/test/html/jsx/TestJsxBrowser.js +37 -19
- package/source/class/qx/test/html/jsx/TestWidget.js +26 -26
- package/source/class/qx/test/io/ImageLoader.js +256 -160
- package/source/class/qx/test/io/MAssert.js +46 -0
- package/source/class/qx/test/io/MRemoteTest.js +9 -11
- package/source/class/qx/test/io/__init__.js +4 -4
- package/source/class/qx/test/io/graphql/Client.js +190 -0
- package/source/class/qx/test/io/graphql/ClientFetch.js +34 -0
- package/source/class/qx/test/io/graphql/Request.js +41 -0
- package/source/class/qx/test/io/jsonrpc/Client.js +333 -0
- package/source/class/qx/test/io/jsonrpc/Protocol.js +108 -0
- package/source/class/qx/test/io/request/Jsonp.js +23 -20
- package/source/class/qx/test/io/request/JsonpWithRemote.js +25 -22
- package/source/class/qx/test/io/request/MRequest.js +137 -114
- package/source/class/qx/test/io/request/Xhr.js +367 -209
- package/source/class/qx/test/io/request/XhrWithRemote.js +133 -100
- package/source/class/qx/test/io/rest/Resource.js +325 -270
- package/source/class/qx/test/io/rest/ResourceWithRemote.js +75 -58
- package/source/class/qx/test/io/transport/PostMessage.js +56 -0
- package/source/class/qx/test/io/transport/Websocket.js +64 -0
- package/source/class/qx/test/lang/Array.js +79 -105
- package/source/class/qx/test/lang/Function.js +64 -53
- package/source/class/qx/test/lang/Json.js +51 -79
- package/source/class/qx/test/lang/Number.js +4 -6
- package/source/class/qx/test/lang/Object.js +143 -133
- package/source/class/qx/test/lang/String.js +151 -95
- package/source/class/qx/test/lang/Type.js +34 -44
- package/source/class/qx/test/lang/Webkit.js +8 -13
- package/source/class/qx/test/lang/normalize/Array.js +121 -68
- package/source/class/qx/test/lang/normalize/Date.js +232 -49
- package/source/class/qx/test/lang/normalize/Error.js +5 -8
- package/source/class/qx/test/lang/normalize/Function.js +7 -13
- package/source/class/qx/test/lang/normalize/Object.js +22 -29
- package/source/class/qx/test/lang/normalize/String.js +19 -28
- package/source/class/qx/test/locale/Date.js +91 -43
- package/source/class/qx/test/locale/Locale.js +52 -32
- package/source/class/qx/test/locale/LocalizedString.js +12 -12
- package/source/class/qx/test/log/DeprecationMethodOverriding.js +52 -31
- package/source/class/qx/test/log/Filters.js +6 -3
- package/source/class/qx/test/log/Formatter.js +13 -7
- package/source/class/qx/test/log/Logger.js +19 -29
- package/source/class/qx/test/log/RingBuffer.js +14 -25
- package/source/class/qx/test/log/__init__.js +4 -4
- package/source/class/qx/test/log/fixture/ClassA.js +22 -22
- package/source/class/qx/test/log/fixture/ClassB1.js +7 -9
- package/source/class/qx/test/log/fixture/ClassB2.js +5 -7
- package/source/class/qx/test/log/fixture/ClassC1.js +5 -7
- package/source/class/qx/test/log/fixture/ClassC2.js +7 -9
- package/source/class/qx/test/mobile/LocaleSwitch.js +29 -36
- package/source/class/qx/test/mobile/MobileTestCase.js +39 -49
- package/source/class/qx/test/mobile/basic/Atom.js +129 -53
- package/source/class/qx/test/mobile/basic/Image.js +41 -31
- package/source/class/qx/test/mobile/basic/Label.js +6 -10
- package/source/class/qx/test/mobile/container/Carousel.js +41 -45
- package/source/class/qx/test/mobile/container/Composite.js +48 -65
- package/source/class/qx/test/mobile/container/Drawer.js +42 -29
- package/source/class/qx/test/mobile/container/Navigation.js +14 -20
- package/source/class/qx/test/mobile/container/Scroll.js +23 -19
- package/source/class/qx/test/mobile/core/Widget.js +150 -86
- package/source/class/qx/test/mobile/dialog/Menu.js +47 -26
- package/source/class/qx/test/mobile/dialog/Popup.js +30 -19
- package/source/class/qx/test/mobile/embed/Html.js +5 -8
- package/source/class/qx/test/mobile/form/Button.js +15 -13
- package/source/class/qx/test/mobile/form/CheckBox.js +21 -17
- package/source/class/qx/test/mobile/form/Form.js +37 -24
- package/source/class/qx/test/mobile/form/Group.js +5 -9
- package/source/class/qx/test/mobile/form/Label.js +11 -13
- package/source/class/qx/test/mobile/form/NumberField.js +49 -45
- package/source/class/qx/test/mobile/form/RadioButton.js +30 -19
- package/source/class/qx/test/mobile/form/SelectBox.js +39 -25
- package/source/class/qx/test/mobile/form/SingleRenderer.js +31 -27
- package/source/class/qx/test/mobile/form/Slider.js +55 -35
- package/source/class/qx/test/mobile/form/TextArea.js +34 -24
- package/source/class/qx/test/mobile/form/TextField.js +34 -24
- package/source/class/qx/test/mobile/form/ToggleButton.js +10 -14
- package/source/class/qx/test/mobile/layout/Card.js +21 -17
- package/source/class/qx/test/mobile/layout/HBox.js +25 -20
- package/source/class/qx/test/mobile/layout/VBox.js +25 -21
- package/source/class/qx/test/mobile/list/List.js +114 -83
- package/source/class/qx/test/mobile/navigationbar/NavigationBar.js +5 -9
- package/source/class/qx/test/mobile/page/Manager.js +7 -13
- package/source/class/qx/test/mobile/page/NavigationPage.js +7 -17
- package/source/class/qx/test/mobile/page/Page.js +101 -68
- package/source/class/qx/test/mobile/tabbar/TabBar.js +11 -21
- package/source/class/qx/test/mobile/toolbar/Toolbar.js +16 -16
- package/source/class/qx/test/performance/BaseCall.js +31 -36
- package/source/class/qx/test/performance/Event.js +60 -53
- package/source/class/qx/test/performance/Object.js +16 -22
- package/source/class/qx/test/performance/Property.js +20 -22
- package/source/class/qx/test/performance/data/Marshaling.js +25 -30
- package/source/class/qx/test/performance/decorator/AbstractDecorator.js +22 -34
- package/source/class/qx/test/performance/decorator/Background.js +4 -6
- package/source/class/qx/test/performance/decorator/BackgroundScale.js +6 -8
- package/source/class/qx/test/performance/decorator/Single.js +4 -6
- package/source/class/qx/test/performance/element/Element.js +50 -67
- package/source/class/qx/test/performance/widget/AbstractWidget.js +31 -44
- package/source/class/qx/test/performance/widget/Button.js +5 -7
- package/source/class/qx/test/performance/widget/Label.js +5 -7
- package/source/class/qx/test/performance/widget/RichLabel.js +6 -8
- package/source/class/qx/test/performance/widget/Widget.js +5 -7
- package/source/class/qx/test/performance/widget/WidgetWithDecorator.js +7 -9
- package/source/class/qx/test/performance/widget/WidgetWithSingle.js +9 -11
- package/source/class/qx/test/renderer/Color.js +22 -49
- package/source/class/qx/test/testclasses/BaseClassBoth.js +11 -8
- package/source/class/qx/test/testclasses/BaseClassIncluded.js +5 -6
- package/source/class/qx/test/testclasses/BaseClassPatched.js +15 -8
- package/source/class/qx/test/testclasses/DerivedClassBoth.js +7 -7
- package/source/class/qx/test/testclasses/DerivedClassIncluded.js +7 -7
- package/source/class/qx/test/testclasses/DerivedClassPatched.js +7 -7
- package/source/class/qx/test/testclasses/MMixinOne.js +4 -4
- package/source/class/qx/test/testclasses/MMixinTwo.js +2 -2
- package/source/class/qx/test/testclasses/RootClass.js +8 -8
- package/source/class/qx/test/theme/__init__.js +4 -4
- package/source/class/qx/test/theme/manager/Color.js +52 -66
- package/source/class/qx/test/theme/manager/Decoration.js +177 -154
- package/source/class/qx/test/theme/manager/Font.js +68 -39
- package/source/class/qx/test/theme/manager/Icon.js +46 -43
- package/source/class/qx/test/theme/manager/Meta.js +121 -110
- package/source/class/qx/test/theme/manager/__init__.js +4 -4
- package/source/class/qx/test/theme/manager/mock/Appearance.js +17 -23
- package/source/class/qx/test/theme/manager/mock/Color.js +7 -9
- package/source/class/qx/test/theme/manager/mock/Decoration.js +7 -10
- package/source/class/qx/test/theme/manager/mock/Font.js +6 -10
- package/source/class/qx/test/theme/simple/Appearance.js +268 -210
- package/source/class/qx/test/tool/utils/Utils.js +10 -8
- package/source/class/qx/test/toolchain/PrivateOptimization.js +20 -13
- package/source/class/qx/test/toolchain/TestRunner.js +12 -12
- package/source/class/qx/test/toolchain/VariantOptimization.js +37 -26
- package/source/class/qx/test/toolchain/__init__.js +4 -4
- package/source/class/qx/test/type/Array.js +8 -12
- package/source/class/qx/test/type/BaseArray.js +58 -78
- package/source/class/qx/test/type/BaseString.js +27 -65
- package/source/class/qx/test/type/__init__.js +4 -4
- package/source/class/qx/test/ui/BackgroundColor.js +20 -21
- package/source/class/qx/test/ui/ChildrenHandling.js +136 -81
- package/source/class/qx/test/ui/Destroy.js +310 -248
- package/source/class/qx/test/ui/Focus.js +40 -87
- package/source/class/qx/test/ui/Insets.js +14 -18
- package/source/class/qx/test/ui/LayoutTestCase.js +99 -92
- package/source/class/qx/test/ui/LocaleSwitch.js +37 -41
- package/source/class/qx/test/ui/RadioItems.js +11 -22
- package/source/class/qx/test/ui/Widget.js +13 -17
- package/source/class/qx/test/ui/Window.js +26 -39
- package/source/class/qx/test/ui/basic/Atom.js +37 -25
- package/source/class/qx/test/ui/basic/Image.js +179 -138
- package/source/class/qx/test/ui/basic/Label.js +147 -65
- package/source/class/qx/test/ui/basic/__init__.js +4 -4
- package/source/class/qx/test/ui/command/Command.js +105 -69
- package/source/class/qx/test/ui/command/Group.js +24 -21
- package/source/class/qx/test/ui/command/GroupManager.js +7 -12
- package/source/class/qx/test/ui/container/Stack.js +26 -36
- package/source/class/qx/test/ui/core/AbstractScrollArea.js +84 -67
- package/source/class/qx/test/ui/core/Appearance.js +53 -54
- package/source/class/qx/test/ui/core/Blocker.js +80 -44
- package/source/class/qx/test/ui/core/DragDropScrolling.js +69 -55
- package/source/class/qx/test/ui/core/Placement.js +22 -34
- package/source/class/qx/test/ui/core/Queues.js +28 -39
- package/source/class/qx/test/ui/core/SizeHint.js +32 -76
- package/source/class/qx/test/ui/core/SizeHintX.js +8 -15
- package/source/class/qx/test/ui/core/SizeHintY.js +8 -15
- package/source/class/qx/test/ui/core/Spacer.js +11 -18
- package/source/class/qx/test/ui/core/Widget.js +117 -112
- package/source/class/qx/test/ui/core/__init__.js +4 -4
- package/source/class/qx/test/ui/decoration/LinearGradient.js +18 -14
- package/source/class/qx/test/ui/embed/Iframe.js +70 -66
- package/source/class/qx/test/ui/embed/__init__.js +4 -4
- package/source/class/qx/test/ui/form/AbstractSelectBox.js +11 -16
- package/source/class/qx/test/ui/form/AbstractVirtualBox.js +12 -19
- package/source/class/qx/test/ui/form/BooleanFormat.js +40 -25
- package/source/class/qx/test/ui/form/Color.js +29 -19
- package/source/class/qx/test/ui/form/ComboBox.js +39 -25
- package/source/class/qx/test/ui/form/Date.js +34 -21
- package/source/class/qx/test/ui/form/DateField.js +16 -19
- package/source/class/qx/test/ui/form/Executable.js +98 -68
- package/source/class/qx/test/ui/form/Field.js +65 -54
- package/source/class/qx/test/ui/form/Form.js +211 -123
- package/source/class/qx/test/ui/form/FormManager.js +72 -100
- package/source/class/qx/test/ui/form/FormValidator.js +549 -399
- package/source/class/qx/test/ui/form/Label.js +87 -65
- package/source/class/qx/test/ui/form/List.js +19 -19
- package/source/class/qx/test/ui/form/MenuButton.js +26 -20
- package/source/class/qx/test/ui/form/ModelProperty.js +40 -36
- package/source/class/qx/test/ui/form/ModelSelection.js +39 -84
- package/source/class/qx/test/ui/form/NumberFormat.js +30 -19
- package/source/class/qx/test/ui/form/Placeholder.js +147 -87
- package/source/class/qx/test/ui/form/RadioButtonGroup.js +31 -26
- package/source/class/qx/test/ui/form/RadioGroup.js +58 -54
- package/source/class/qx/test/ui/form/Range.js +63 -28
- package/source/class/qx/test/ui/form/Renderer.js +39 -33
- package/source/class/qx/test/ui/form/Resetter.js +21 -35
- package/source/class/qx/test/ui/form/Slider.js +37 -21
- package/source/class/qx/test/ui/form/Spinner.js +9 -5
- package/source/class/qx/test/ui/form/SplitButton.js +7 -11
- package/source/class/qx/test/ui/form/StringFormat.js +60 -30
- package/source/class/qx/test/ui/form/TextArea.js +59 -41
- package/source/class/qx/test/ui/form/TextField.js +14 -16
- package/source/class/qx/test/ui/form/ToggleButton.js +20 -24
- package/source/class/qx/test/ui/form/VirtualSelectBox.js +66 -40
- package/source/class/qx/test/ui/form/__init__.js +4 -4
- package/source/class/qx/test/ui/form/virtual/VirtualComboBox.js +58 -60
- package/source/class/qx/test/ui/form/virtual/VirtualDropDownList.js +120 -110
- package/source/class/qx/test/ui/form/virtual/VirtualSelectBox.js +43 -27
- package/source/class/qx/test/ui/groupbox/CheckGroupBox.js +13 -18
- package/source/class/qx/test/ui/indicator/ProgressBar.js +73 -48
- package/source/class/qx/test/ui/layout/Box.js +23 -22
- package/source/class/qx/test/ui/layout/Flow.js +233 -153
- package/source/class/qx/test/ui/layout/Grid.js +88 -101
- package/source/class/qx/test/ui/layout/LayoutItem.js +57 -83
- package/source/class/qx/test/ui/layout/LayoutRoot.js +7 -11
- package/source/class/qx/test/ui/layout/Util.js +30 -31
- package/source/class/qx/test/ui/layout/__init__.js +4 -4
- package/source/class/qx/test/ui/list/AbstractListTest.js +13 -21
- package/source/class/qx/test/ui/list/Group.js +191 -114
- package/source/class/qx/test/ui/list/List.js +189 -132
- package/source/class/qx/test/ui/list/MAssert.js +14 -9
- package/source/class/qx/test/ui/list/ObjectGroup.js +131 -109
- package/source/class/qx/test/ui/list/core/MultiSelection.js +58 -44
- package/source/class/qx/test/ui/list/core/SingleSelection.js +43 -43
- package/source/class/qx/test/ui/list/fixture/GroupMock.js +6 -9
- package/source/class/qx/test/ui/list/fixture/ItemMock.js +9 -13
- package/source/class/qx/test/ui/root/Inline.js +22 -20
- package/source/class/qx/test/ui/selection/AbstractMultiSelectonTest.js +188 -105
- package/source/class/qx/test/ui/selection/AbstractSingleSelectonTest.js +173 -125
- package/source/class/qx/test/ui/selection/ListMultiSelection.js +19 -21
- package/source/class/qx/test/ui/selection/ListSingleSelection.js +19 -21
- package/source/class/qx/test/ui/selection/RadioGroup.js +41 -29
- package/source/class/qx/test/ui/selection/SelectBox.js +11 -17
- package/source/class/qx/test/ui/selection/Stack.js +22 -27
- package/source/class/qx/test/ui/selection/TabView.js +35 -26
- package/source/class/qx/test/ui/selection/TreeMultiSelection.js +14 -19
- package/source/class/qx/test/ui/selection/TreeSingleSelection.js +20 -24
- package/source/class/qx/test/ui/selection/__init__.js +4 -4
- package/source/class/qx/test/ui/table/Dispose.js +46 -46
- package/source/class/qx/test/ui/table/Table.js +74 -69
- package/source/class/qx/test/ui/table/__init__.js +4 -4
- package/source/class/qx/test/ui/table/celleditor/AbstractField.js +14 -28
- package/source/class/qx/test/ui/table/celleditor/ComboBox.js +11 -18
- package/source/class/qx/test/ui/table/celleditor/PasswordField.js +6 -10
- package/source/class/qx/test/ui/table/celleditor/SelectBox.js +16 -32
- package/source/class/qx/test/ui/table/celleditor/TextField.js +6 -9
- package/source/class/qx/test/ui/table/celleditor/__init__.js +4 -4
- package/source/class/qx/test/ui/table/columnmodel/Basic.js +130 -129
- package/source/class/qx/test/ui/table/model/Filtered.js +51 -36
- package/source/class/qx/test/ui/table/model/Simple.js +43 -45
- package/source/class/qx/test/ui/table/selection/Model.js +70 -22
- package/source/class/qx/test/ui/toolbar/OverflowHandling.js +145 -123
- package/source/class/qx/test/ui/toolbar/ToolBar.js +20 -30
- package/source/class/qx/test/ui/tree/Tree.js +63 -42
- package/source/class/qx/test/ui/tree/TreeFolder.js +44 -46
- package/source/class/qx/test/ui/tree/virtual/AbstractTreeTest.js +61 -96
- package/source/class/qx/test/ui/tree/virtual/MultiSelection.js +68 -39
- package/source/class/qx/test/ui/tree/virtual/OneSelection.js +82 -42
- package/source/class/qx/test/ui/tree/virtual/OpenCloseController.js +80 -101
- package/source/class/qx/test/ui/tree/virtual/SingleSelection.js +40 -32
- package/source/class/qx/test/ui/tree/virtual/Sorting.js +46 -47
- package/source/class/qx/test/ui/tree/virtual/Tree.js +267 -191
- package/source/class/qx/test/ui/tree/virtual/TreeItem.js +60 -63
- package/source/class/qx/test/ui/tree/virtual/UtilTest.js +65 -50
- package/source/class/qx/test/ui/tree/virtual/WidgetProvider.js +127 -132
- package/source/class/qx/test/ui/virtual/Axis.js +210 -193
- package/source/class/qx/test/ui/virtual/Pane.js +287 -190
- package/source/class/qx/test/ui/virtual/PaneUpdate.js +71 -77
- package/source/class/qx/test/ui/virtual/PointerEventMock.js +10 -13
- package/source/class/qx/test/ui/virtual/Scroller.js +29 -39
- package/source/class/qx/test/ui/virtual/__init__.js +4 -4
- package/source/class/qx/test/ui/virtual/cell/WidgetCell.js +39 -40
- package/source/class/qx/test/ui/virtual/layer/CellSpanManager.js +157 -127
- package/source/class/qx/test/ui/virtual/layer/Column.js +6 -10
- package/source/class/qx/test/ui/virtual/layer/GridLines.js +6 -10
- package/source/class/qx/test/ui/virtual/layer/GridLinesHorizontal.js +6 -9
- package/source/class/qx/test/ui/virtual/layer/GridLinesVertical.js +6 -9
- package/source/class/qx/test/ui/virtual/layer/HtmlCell.js +12 -19
- package/source/class/qx/test/ui/virtual/layer/HtmlCellSpan.js +13 -21
- package/source/class/qx/test/ui/virtual/layer/LayerMock.js +31 -43
- package/source/class/qx/test/ui/virtual/layer/LayerSimple.js +26 -26
- package/source/class/qx/test/ui/virtual/layer/LayerTestCase.js +52 -50
- package/source/class/qx/test/ui/virtual/layer/Row.js +6 -10
- package/source/class/qx/test/ui/virtual/layer/WidgetCell.js +45 -52
- package/source/class/qx/test/ui/virtual/layer/WidgetCellSpan.js +71 -48
- package/source/class/qx/test/ui/virtual/layer/__init__.js +4 -4
- package/source/class/qx/test/ui/virtual/performance/AbstractLayerTest.js +84 -68
- package/source/class/qx/test/ui/virtual/performance/DomCell.js +6 -9
- package/source/class/qx/test/ui/virtual/performance/DomPoolCell.js +6 -9
- package/source/class/qx/test/ui/virtual/performance/HtmlDivCell.js +7 -11
- package/source/class/qx/test/ui/virtual/performance/HtmlDivRelative.js +6 -9
- package/source/class/qx/test/ui/virtual/performance/HtmlTableCell.js +8 -13
- package/source/class/qx/test/ui/virtual/performance/HtmlTableCellNaive.js +8 -13
- package/source/class/qx/test/ui/virtual/performance/HtmlTableCssCell.js +8 -19
- package/source/class/qx/test/ui/virtual/performance/WidgetCell.js +10 -15
- package/source/class/qx/test/ui/virtual/performance/__init__.js +4 -4
- package/source/class/qx/test/ui/virtual/performance/layer/DomCell.js +24 -18
- package/source/class/qx/test/ui/virtual/performance/layer/DomPoolCell.js +28 -26
- package/source/class/qx/test/ui/virtual/performance/layer/HtmlDivRelative.js +13 -17
- package/source/class/qx/test/ui/virtual/performance/layer/HtmlTableCell.js +29 -28
- package/source/class/qx/test/ui/virtual/performance/layer/HtmlTableCellNaive.js +22 -24
- package/source/class/qx/test/ui/virtual/performance/layer/HtmlTableCssCell.js +32 -47
- package/source/class/qx/test/ui/virtual/performance/layer/__init__.js +4 -4
- package/source/class/qx/test/ui/window/Desktop.js +21 -12
- package/source/class/qx/test/util/Base64.js +10 -13
- package/source/class/qx/test/util/ColorUtil.js +121 -54
- package/source/class/qx/test/util/DateFormat.js +569 -299
- package/source/class/qx/test/util/DateMock.js +16 -19
- package/source/class/qx/test/util/DeferredCall.js +12 -13
- package/source/class/qx/test/util/Delegate.js +28 -26
- package/source/class/qx/test/util/DisposeUtil.js +32 -14
- package/source/class/qx/test/util/DynamicScriptLoader.js +99 -64
- package/source/class/qx/test/util/Fsm.js +16 -18
- package/source/class/qx/test/util/Function.js +23 -19
- package/source/class/qx/test/util/LibraryManager.js +15 -22
- package/source/class/qx/test/util/NumberFormat.js +53 -64
- package/source/class/qx/test/util/PropertyUtil.js +35 -35
- package/source/class/qx/test/util/Request.js +26 -18
- package/source/class/qx/test/util/ResourceManager.js +50 -35
- package/source/class/qx/test/util/ResponseParser.js +45 -35
- package/source/class/qx/test/util/RingBuffer.js +15 -28
- package/source/class/qx/test/util/Serializer.js +210 -153
- package/source/class/qx/test/util/StringBuilder.js +7 -13
- package/source/class/qx/test/util/StringSplit.js +114 -69
- package/source/class/qx/test/util/Uri.js +74 -78
- package/source/class/qx/test/util/Validate.js +95 -64
- package/source/class/qx/test/util/placement/BestFitAxis.js +17 -26
- package/source/class/qx/test/util/placement/DirectAxis.js +8 -11
- package/source/class/qx/test/util/placement/KeepAlignAxis.js +17 -26
- package/source/class/qx/test/util/placement/Placement.js +607 -244
- package/source/class/qx/test/util/placement/__init__.js +4 -4
- package/source/class/qx/theme/Classic.js +9 -11
- package/source/class/qx/theme/Indigo.js +9 -11
- package/source/class/qx/theme/Modern.js +9 -11
- package/source/class/qx/theme/Simple.js +9 -11
- package/source/class/qx/theme/TangibleDark.js +1 -1
- package/source/class/qx/theme/TangibleLight.js +1 -1
- package/source/class/qx/theme/__init__.js +4 -4
- package/source/class/qx/theme/classic/Appearance.js +995 -1336
- package/source/class/qx/theme/classic/Color.js +83 -83
- package/source/class/qx/theme/classic/Decoration.js +318 -299
- package/source/class/qx/theme/classic/Font.js +38 -25
- package/source/class/qx/theme/icon/Oxygen.js +4 -5
- package/source/class/qx/theme/icon/Tango.js +4 -5
- package/source/class/qx/theme/indigo/Appearance.js +66 -85
- package/source/class/qx/theme/indigo/Color.js +65 -66
- package/source/class/qx/theme/indigo/Decoration.js +31 -45
- package/source/class/qx/theme/indigo/Font.js +20 -29
- package/source/class/qx/theme/manager/Appearance.js +58 -91
- package/source/class/qx/theme/manager/Color.js +20 -41
- package/source/class/qx/theme/manager/Decoration.js +72 -100
- package/source/class/qx/theme/manager/Font.js +51 -67
- package/source/class/qx/theme/manager/Icon.js +13 -27
- package/source/class/qx/theme/manager/Meta.js +27 -44
- package/source/class/qx/theme/modern/Appearance.js +1049 -1440
- package/source/class/qx/theme/modern/Color.js +155 -166
- package/source/class/qx/theme/modern/Decoration.js +471 -598
- package/source/class/qx/theme/modern/Font.js +59 -52
- package/source/class/qx/theme/simple/Appearance.js +936 -1207
- package/source/class/qx/theme/simple/Color.js +62 -62
- package/source/class/qx/theme/simple/Decoration.js +456 -678
- package/source/class/qx/theme/simple/Font.js +18 -25
- package/source/class/qx/theme/simple/Image.js +49 -52
- package/source/class/qx/theme/tangible/Appearance.js +1575 -1743
- package/source/class/qx/theme/tangible/ColorDark.js +5 -5
- package/source/class/qx/theme/tangible/ColorEngine.js +38 -35
- package/source/class/qx/theme/tangible/ColorLight.js +7 -7
- package/source/class/qx/theme/tangible/Decoration.js +1108 -1300
- package/source/class/qx/theme/tangible/Font.js +66 -70
- package/source/class/qx/theme/tangible/Image.js +44 -48
- package/source/class/qx/tool/cli/Application.js +5 -5
- package/source/class/qx/tool/cli/Cli.js +103 -52
- package/source/class/qx/tool/cli/ConfigDb.js +18 -15
- package/source/class/qx/tool/cli/LibraryApplication.js +1 -1
- package/source/class/qx/tool/cli/Watch.js +174 -102
- package/source/class/qx/tool/cli/api/AbstractApi.js +17 -18
- package/source/class/qx/tool/cli/api/CompilerApi.js +15 -8
- package/source/class/qx/tool/cli/api/LibraryApi.js +4 -6
- package/source/class/qx/tool/cli/api/Test.js +12 -9
- package/source/class/qx/tool/cli/commands/Add.js +12 -15
- package/source/class/qx/tool/cli/commands/Clean.js +10 -9
- package/source/class/qx/tool/cli/commands/Command.js +18 -13
- package/source/class/qx/tool/cli/commands/Compile.js +633 -267
- package/source/class/qx/tool/cli/commands/Config.js +75 -42
- package/source/class/qx/tool/cli/commands/Create.js +108 -59
- package/source/class/qx/tool/cli/commands/Deploy.js +138 -86
- package/source/class/qx/tool/cli/commands/Es6ify.js +118 -0
- package/source/class/qx/tool/cli/commands/Lint.js +75 -34
- package/source/class/qx/tool/cli/commands/Migrate.js +13 -7
- package/source/class/qx/tool/cli/commands/Package.js +67 -45
- package/source/class/qx/tool/cli/commands/Pkg.js +21 -18
- package/source/class/qx/tool/cli/commands/Run.js +57 -37
- package/source/class/qx/tool/cli/commands/Serve.js +62 -37
- package/source/class/qx/tool/cli/commands/Test.js +40 -18
- package/source/class/qx/tool/cli/commands/add/Class.js +66 -28
- package/source/class/qx/tool/cli/commands/add/Script.js +54 -27
- package/source/class/qx/tool/cli/commands/package/Install.js +265 -103
- package/source/class/qx/tool/cli/commands/package/List.js +199 -75
- package/source/class/qx/tool/cli/commands/package/Migrate.js +7 -3
- package/source/class/qx/tool/cli/commands/package/Publish.js +220 -114
- package/source/class/qx/tool/cli/commands/package/Remove.js +40 -17
- package/source/class/qx/tool/cli/commands/package/Update.js +115 -48
- package/source/class/qx/tool/cli/commands/package/Upgrade.js +41 -20
- package/source/class/qx/tool/compiler/Analyser.js +427 -222
- package/source/class/qx/tool/compiler/ClassFile.js +831 -401
- package/source/class/qx/tool/compiler/Console.js +136 -87
- package/source/class/qx/tool/compiler/Es6ify.js +404 -0
- package/source/class/qx/tool/compiler/Preprocess.js +28 -25
- package/source/class/qx/tool/compiler/app/Application.js +149 -72
- package/source/class/qx/tool/compiler/app/Cldr.js +506 -106
- package/source/class/qx/tool/compiler/app/Library.js +62 -27
- package/source/class/qx/tool/compiler/app/Part.js +10 -12
- package/source/class/qx/tool/compiler/app/Translation.js +189 -162
- package/source/class/qx/tool/compiler/app/WebFont.js +215 -161
- package/source/class/qx/tool/compiler/jsdoc/ChildControlParser.js +3 -3
- package/source/class/qx/tool/compiler/jsdoc/CommandParser.js +8 -9
- package/source/class/qx/tool/compiler/jsdoc/ParamParser.js +7 -6
- package/source/class/qx/tool/compiler/jsdoc/Parser.js +27 -18
- package/source/class/qx/tool/compiler/jsdoc/ReturnParser.js +3 -3
- package/source/class/qx/tool/compiler/jsdoc/ThrowsParser.js +4 -4
- package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +5 -6
- package/source/class/qx/tool/compiler/makers/AppMaker.js +40 -19
- package/source/class/qx/tool/compiler/makers/Maker.js +29 -21
- package/source/class/qx/tool/compiler/resources/AbstractMatcher.js +8 -8
- package/source/class/qx/tool/compiler/resources/Asset.js +123 -61
- package/source/class/qx/tool/compiler/resources/ImageLoader.js +18 -8
- package/source/class/qx/tool/compiler/resources/Manager.js +156 -93
- package/source/class/qx/tool/compiler/resources/MetaLoader.js +5 -3
- package/source/class/qx/tool/compiler/resources/ResourceConverter.js +8 -8
- package/source/class/qx/tool/compiler/resources/ResourceLoader.js +8 -9
- package/source/class/qx/tool/compiler/resources/ScssConverter.js +54 -18
- package/source/class/qx/tool/compiler/resources/ScssFile.js +157 -80
- package/source/class/qx/tool/compiler/resources/ScssIncludeConverter.js +3 -3
- package/source/class/qx/tool/compiler/targets/BuildTarget.js +23 -13
- package/source/class/qx/tool/compiler/targets/SourceCodeCopier.js +29 -9
- package/source/class/qx/tool/compiler/targets/SourceTarget.js +2 -2
- package/source/class/qx/tool/compiler/targets/Target.js +292 -187
- package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +163 -103
- package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +48 -23
- package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +75 -62
- package/source/class/qx/tool/compiler/targets/meta/BootJs.js +49 -29
- package/source/class/qx/tool/compiler/targets/meta/Javascript.js +6 -7
- package/source/class/qx/tool/compiler/targets/meta/Package.js +54 -51
- package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +41 -21
- package/source/class/qx/tool/compiler/targets/meta/Part.js +9 -10
- package/source/class/qx/tool/compiler/targets/meta/PolyfillJs.js +18 -5
- package/source/class/qx/tool/compiler/targets/meta/Uglify.js +54 -21
- package/source/class/qx/tool/config/Abstract.js +61 -25
- package/source/class/qx/tool/config/Compile.js +3 -2
- package/source/class/qx/tool/config/Lockfile.js +3 -2
- package/source/class/qx/tool/config/Manifest.js +3 -2
- package/source/class/qx/tool/config/Registry.js +4 -3
- package/source/class/qx/tool/config/Utils.js +88 -37
- package/source/class/qx/tool/migration/BaseMigration.js +67 -25
- package/source/class/qx/tool/migration/M6_0_0.js +96 -46
- package/source/class/qx/tool/migration/M7_0_0.js +12 -6
- package/source/class/qx/tool/migration/Runner.js +28 -14
- package/source/class/qx/tool/utils/IndexedArray.js +15 -18
- package/source/class/qx/tool/utils/Json.js +35 -14
- package/source/class/qx/tool/utils/LogManager.js +50 -26
- package/source/class/qx/tool/utils/Logger.js +11 -12
- package/source/class/qx/tool/utils/Promisify.js +45 -49
- package/source/class/qx/tool/utils/Utils.js +63 -48
- package/source/class/qx/tool/utils/Values.js +4 -7
- package/source/class/qx/tool/utils/Website.js +82 -29
- package/source/class/qx/tool/utils/files/FindFiles.js +37 -33
- package/source/class/qx/tool/utils/files/Utils.js +74 -54
- package/source/class/qx/tool/utils/json/Parser.js +163 -54
- package/source/class/qx/tool/utils/json/Stringify.js +87 -72
- package/source/class/qx/tool/utils/json/Tokenizer.js +64 -39
- package/source/class/qx/tool/utils/json/Writer.js +20 -21
- package/source/class/qx/type/Array.js +19 -41
- package/source/class/qx/type/BaseArray.js +136 -151
- package/source/class/qx/type/BaseError.js +17 -34
- package/source/class/qx/type/BaseString.js +104 -121
- package/source/class/qx/type/__init__.js +3 -3
- package/source/class/qx/ui/basic/Atom.js +75 -109
- package/source/class/qx/ui/basic/Image.js +283 -319
- package/source/class/qx/ui/basic/Label.js +161 -208
- package/source/class/qx/ui/command/Command.js +51 -86
- package/source/class/qx/ui/command/Group.js +43 -50
- package/source/class/qx/ui/command/GroupManager.js +50 -53
- package/source/class/qx/ui/container/Composite.js +15 -29
- package/source/class/qx/ui/container/Resizer.js +7 -11
- package/source/class/qx/ui/container/Scroll.js +10 -21
- package/source/class/qx/ui/container/SlideBar.js +76 -119
- package/source/class/qx/ui/container/Stack.js +27 -54
- package/source/class/qx/ui/control/ColorPopup.js +109 -130
- package/source/class/qx/ui/control/ColorSelector.js +334 -301
- package/source/class/qx/ui/control/DateChooser.js +143 -177
- package/source/class/qx/ui/core/Blocker.js +91 -127
- package/source/class/qx/ui/core/ColumnData.js +16 -34
- package/source/class/qx/ui/core/DragDropCursor.js +17 -30
- package/source/class/qx/ui/core/DragDropScrolling.js +8 -14
- package/source/class/qx/ui/core/EventHandler.js +108 -132
- package/source/class/qx/ui/core/FocusHandler.js +78 -127
- package/source/class/qx/ui/core/IMultiSelection.js +5 -9
- package/source/class/qx/ui/core/ISingleSelection.js +10 -16
- package/source/class/qx/ui/core/ISingleSelectionProvider.js +4 -6
- package/source/class/qx/ui/core/LayoutItem.js +190 -306
- package/source/class/qx/ui/core/MBlocker.js +22 -38
- package/source/class/qx/ui/core/MChildrenHandling.js +14 -29
- package/source/class/qx/ui/core/MContentPadding.js +50 -69
- package/source/class/qx/ui/core/MDragDropScrolling.js +82 -80
- package/source/class/qx/ui/core/MExecutable.js +27 -52
- package/source/class/qx/ui/core/MLayoutHandling.js +6 -14
- package/source/class/qx/ui/core/MMovable.js +64 -80
- package/source/class/qx/ui/core/MMultiSelectionHandling.js +68 -87
- package/source/class/qx/ui/core/MNativeOverflow.js +16 -26
- package/source/class/qx/ui/core/MPlacement.js +171 -170
- package/source/class/qx/ui/core/MRemoteChildrenHandling.js +14 -27
- package/source/class/qx/ui/core/MRemoteLayoutHandling.js +4 -7
- package/source/class/qx/ui/core/MResizable.js +142 -175
- package/source/class/qx/ui/core/MSingleSelectionHandling.js +40 -45
- package/source/class/qx/ui/core/SingleSelectionManager.js +41 -60
- package/source/class/qx/ui/core/Spacer.js +12 -22
- package/source/class/qx/ui/core/Widget.js +628 -983
- package/source/class/qx/ui/core/queue/Appearance.js +15 -24
- package/source/class/qx/ui/core/queue/Dispose.js +7 -16
- package/source/class/qx/ui/core/queue/Layout.js +44 -71
- package/source/class/qx/ui/core/queue/Manager.js +140 -133
- package/source/class/qx/ui/core/queue/Visibility.js +21 -39
- package/source/class/qx/ui/core/queue/Widget.js +15 -26
- package/source/class/qx/ui/core/scroll/AbstractScrollArea.js +124 -162
- package/source/class/qx/ui/core/scroll/IScrollBar.js +13 -24
- package/source/class/qx/ui/core/scroll/MRoll.js +14 -19
- package/source/class/qx/ui/core/scroll/MScrollBarFactory.js +3 -6
- package/source/class/qx/ui/core/scroll/MWheelHandling.js +10 -12
- package/source/class/qx/ui/core/scroll/NativeScrollBar.js +101 -125
- package/source/class/qx/ui/core/scroll/ScrollBar.js +86 -130
- package/source/class/qx/ui/core/scroll/ScrollPane.js +95 -134
- package/source/class/qx/ui/core/scroll/ScrollSlider.js +13 -19
- package/source/class/qx/ui/core/scroll/__init__.js +4 -4
- package/source/class/qx/ui/core/selection/Abstract.js +255 -456
- package/source/class/qx/ui/core/selection/ScrollArea.js +35 -73
- package/source/class/qx/ui/core/selection/Widget.js +57 -120
- package/source/class/qx/ui/decoration/Abstract.js +11 -20
- package/source/class/qx/ui/decoration/Decorator.js +56 -55
- package/source/class/qx/ui/decoration/IDecorator.js +5 -11
- package/source/class/qx/ui/decoration/MBackgroundColor.js +13 -20
- package/source/class/qx/ui/decoration/MBackgroundImage.js +82 -77
- package/source/class/qx/ui/decoration/MBorderImage.js +72 -94
- package/source/class/qx/ui/decoration/MBorderRadius.js +35 -38
- package/source/class/qx/ui/decoration/MBoxShadow.js +61 -55
- package/source/class/qx/ui/decoration/MDoubleBorder.js +157 -155
- package/source/class/qx/ui/decoration/MLinearBackgroundGradient.js +169 -89
- package/source/class/qx/ui/decoration/MSingleBorder.js +138 -124
- package/source/class/qx/ui/decoration/MTransition.js +46 -42
- package/source/class/qx/ui/decoration/__init__.js +2 -2
- package/source/class/qx/ui/embed/AbstractIframe.js +37 -55
- package/source/class/qx/ui/embed/Canvas.js +34 -66
- package/source/class/qx/ui/embed/Html.js +46 -70
- package/source/class/qx/ui/embed/Iframe.js +178 -158
- package/source/class/qx/ui/embed/ThemedIframe.js +91 -135
- package/source/class/qx/ui/form/AbstractField.js +262 -303
- package/source/class/qx/ui/form/AbstractSelectBox.js +65 -87
- package/source/class/qx/ui/form/Button.js +35 -73
- package/source/class/qx/ui/form/CheckBox.js +26 -48
- package/source/class/qx/ui/form/CheckedList.js +41 -25
- package/source/class/qx/ui/form/CheckedSelectBox.js +97 -62
- package/source/class/qx/ui/form/ComboBox.js +98 -121
- package/source/class/qx/ui/form/DateField.js +140 -181
- package/source/class/qx/ui/form/Form.js +50 -69
- package/source/class/qx/ui/form/HoverButton.js +37 -54
- package/source/class/qx/ui/form/IArrayForm.js +8 -16
- package/source/class/qx/ui/form/IBooleanForm.js +8 -16
- package/source/class/qx/ui/form/IColorForm.js +8 -16
- package/source/class/qx/ui/form/IDateForm.js +8 -16
- package/source/class/qx/ui/form/IExecutable.js +7 -14
- package/source/class/qx/ui/form/IField.js +7 -14
- package/source/class/qx/ui/form/IForm.js +17 -32
- package/source/class/qx/ui/form/IListItem.js +1 -4
- package/source/class/qx/ui/form/IModel.js +7 -15
- package/source/class/qx/ui/form/IModelForm.js +8 -16
- package/source/class/qx/ui/form/IModelSelection.js +4 -8
- package/source/class/qx/ui/form/INumberForm.js +8 -15
- package/source/class/qx/ui/form/IRadioItem.js +8 -17
- package/source/class/qx/ui/form/IRange.js +10 -20
- package/source/class/qx/ui/form/IStringForm.js +8 -16
- package/source/class/qx/ui/form/List.js +82 -122
- package/source/class/qx/ui/form/ListItem.js +21 -38
- package/source/class/qx/ui/form/MForm.js +35 -41
- package/source/class/qx/ui/form/MModelProperty.js +9 -14
- package/source/class/qx/ui/form/MModelSelection.js +30 -32
- package/source/class/qx/ui/form/MenuButton.js +50 -77
- package/source/class/qx/ui/form/PasswordField.js +4 -6
- package/source/class/qx/ui/form/RadioButton.js +36 -72
- package/source/class/qx/ui/form/RadioButtonGroup.js +67 -82
- package/source/class/qx/ui/form/RadioGroup.js +92 -127
- package/source/class/qx/ui/form/RepeatButton.js +57 -106
- package/source/class/qx/ui/form/Resetter.js +19 -29
- package/source/class/qx/ui/form/SelectBox.js +62 -105
- package/source/class/qx/ui/form/Slider.js +202 -269
- package/source/class/qx/ui/form/Spinner.js +173 -217
- package/source/class/qx/ui/form/SplitButton.js +73 -115
- package/source/class/qx/ui/form/Tag.js +7 -8
- package/source/class/qx/ui/form/TextArea.js +147 -153
- package/source/class/qx/ui/form/TextField.js +37 -46
- package/source/class/qx/ui/form/ToggleButton.js +54 -90
- package/source/class/qx/ui/form/VirtualComboBox.js +73 -113
- package/source/class/qx/ui/form/VirtualSelectBox.js +264 -274
- package/source/class/qx/ui/form/core/AbstractVirtualBox.js +117 -157
- package/source/class/qx/ui/form/core/VirtualDropDownList.js +101 -144
- package/source/class/qx/ui/form/renderer/AbstractRenderer.js +48 -55
- package/source/class/qx/ui/form/renderer/Double.js +25 -34
- package/source/class/qx/ui/form/renderer/IFormRenderer.js +4 -8
- package/source/class/qx/ui/form/renderer/Single.js +25 -35
- package/source/class/qx/ui/form/renderer/SinglePlaceholder.js +12 -11
- package/source/class/qx/ui/form/renderer/__init__.js +5 -5
- package/source/class/qx/ui/form/validation/AsyncValidator.js +13 -19
- package/source/class/qx/ui/form/validation/Manager.js +74 -108
- package/source/class/qx/ui/form/validation/__init__.js +6 -6
- package/source/class/qx/ui/groupbox/CheckGroupBox.js +30 -47
- package/source/class/qx/ui/groupbox/GroupBox.js +36 -75
- package/source/class/qx/ui/groupbox/RadioGroupBox.js +29 -59
- package/source/class/qx/ui/groupbox/__init__.js +3 -3
- package/source/class/qx/ui/indicator/ProgressBar.js +29 -46
- package/source/class/qx/ui/layout/Abstract.js +28 -53
- package/source/class/qx/ui/layout/Atom.js +95 -111
- package/source/class/qx/ui/layout/Basic.js +29 -30
- package/source/class/qx/ui/layout/Canvas.js +62 -99
- package/source/class/qx/ui/layout/Dock.js +266 -250
- package/source/class/qx/ui/layout/Flow.js +50 -76
- package/source/class/qx/ui/layout/Grid.js +268 -343
- package/source/class/qx/ui/layout/Grow.js +26 -32
- package/source/class/qx/ui/layout/HBox.js +137 -153
- package/source/class/qx/ui/layout/LineSizeIterator.js +19 -28
- package/source/class/qx/ui/layout/Util.js +91 -120
- package/source/class/qx/ui/layout/VBox.js +125 -147
- package/source/class/qx/ui/list/List.js +148 -262
- package/source/class/qx/ui/list/core/IListDelegate.js +13 -26
- package/source/class/qx/ui/list/core/MWidgetController.js +51 -78
- package/source/class/qx/ui/list/provider/IListProvider.js +15 -28
- package/source/class/qx/ui/list/provider/WidgetProvider.js +52 -84
- package/source/class/qx/ui/menu/AbstractButton.js +126 -131
- package/source/class/qx/ui/menu/Button.js +11 -25
- package/source/class/qx/ui/menu/ButtonLayout.js +49 -37
- package/source/class/qx/ui/menu/CheckBox.js +21 -46
- package/source/class/qx/ui/menu/Layout.js +45 -51
- package/source/class/qx/ui/menu/Manager.js +131 -209
- package/source/class/qx/ui/menu/Menu.js +180 -265
- package/source/class/qx/ui/menu/MenuSlideBar.js +13 -20
- package/source/class/qx/ui/menu/RadioButton.js +29 -51
- package/source/class/qx/ui/menu/Separator.js +9 -16
- package/source/class/qx/ui/menubar/Button.js +23 -41
- package/source/class/qx/ui/menubar/MenuBar.js +9 -13
- package/source/class/qx/ui/mobile/__init__.js +5 -5
- package/source/class/qx/ui/mobile/basic/Atom.js +79 -101
- package/source/class/qx/ui/mobile/basic/Image.js +80 -86
- package/source/class/qx/ui/mobile/basic/Label.js +38 -54
- package/source/class/qx/ui/mobile/container/Carousel.js +281 -188
- package/source/class/qx/ui/mobile/container/Collapsible.js +57 -77
- package/source/class/qx/ui/mobile/container/Composite.js +9 -13
- package/source/class/qx/ui/mobile/container/Drawer.js +167 -164
- package/source/class/qx/ui/mobile/container/INavigation.js +6 -10
- package/source/class/qx/ui/mobile/container/IScrollDelegate.js +4 -6
- package/source/class/qx/ui/mobile/container/MIScroll.js +108 -100
- package/source/class/qx/ui/mobile/container/MNativeScroll.js +118 -102
- package/source/class/qx/ui/mobile/container/MScrollHandling.js +8 -7
- package/source/class/qx/ui/mobile/container/Navigation.js +46 -65
- package/source/class/qx/ui/mobile/container/Scroll.js +140 -151
- package/source/class/qx/ui/mobile/control/Picker.js +125 -112
- package/source/class/qx/ui/mobile/core/Blocker.js +62 -71
- package/source/class/qx/ui/mobile/core/DomUpdatedHandler.js +24 -60
- package/source/class/qx/ui/mobile/core/EventHandler.js +158 -138
- package/source/class/qx/ui/mobile/core/MChildrenHandling.js +14 -30
- package/source/class/qx/ui/mobile/core/MLayoutHandling.js +6 -14
- package/source/class/qx/ui/mobile/core/MResize.js +16 -30
- package/source/class/qx/ui/mobile/core/Root.js +90 -80
- package/source/class/qx/ui/mobile/core/Widget.js +351 -479
- package/source/class/qx/ui/mobile/dialog/BusyIndicator.js +31 -46
- package/source/class/qx/ui/mobile/dialog/Manager.js +127 -89
- package/source/class/qx/ui/mobile/dialog/Menu.js +111 -122
- package/source/class/qx/ui/mobile/dialog/Popup.js +202 -194
- package/source/class/qx/ui/mobile/embed/Canvas.js +12 -25
- package/source/class/qx/ui/mobile/embed/Html.js +13 -27
- package/source/class/qx/ui/mobile/form/Button.js +12 -18
- package/source/class/qx/ui/mobile/form/CheckBox.js +20 -35
- package/source/class/qx/ui/mobile/form/Form.js +31 -51
- package/source/class/qx/ui/mobile/form/Group.js +18 -30
- package/source/class/qx/ui/mobile/form/Input.js +30 -35
- package/source/class/qx/ui/mobile/form/Label.js +76 -79
- package/source/class/qx/ui/mobile/form/MState.js +20 -27
- package/source/class/qx/ui/mobile/form/MText.js +27 -47
- package/source/class/qx/ui/mobile/form/MValue.js +66 -94
- package/source/class/qx/ui/mobile/form/NumberField.js +30 -47
- package/source/class/qx/ui/mobile/form/PasswordField.js +8 -14
- package/source/class/qx/ui/mobile/form/RadioButton.js +25 -46
- package/source/class/qx/ui/mobile/form/RadioGroup.js +2 -4
- package/source/class/qx/ui/mobile/form/Row.js +14 -29
- package/source/class/qx/ui/mobile/form/SelectBox.js +77 -104
- package/source/class/qx/ui/mobile/form/Slider.js +116 -144
- package/source/class/qx/ui/mobile/form/TextArea.js +26 -39
- package/source/class/qx/ui/mobile/form/TextField.js +18 -28
- package/source/class/qx/ui/mobile/form/Title.js +11 -19
- package/source/class/qx/ui/mobile/form/ToggleButton.js +35 -58
- package/source/class/qx/ui/mobile/form/__init__.js +1 -1
- package/source/class/qx/ui/mobile/form/renderer/AbstractRenderer.js +24 -31
- package/source/class/qx/ui/mobile/form/renderer/Single.js +59 -85
- package/source/class/qx/ui/mobile/form/renderer/SinglePlaceholder.js +8 -16
- package/source/class/qx/ui/mobile/layout/Abstract.js +48 -85
- package/source/class/qx/ui/mobile/layout/AbstractBox.js +93 -125
- package/source/class/qx/ui/mobile/layout/Card.js +133 -116
- package/source/class/qx/ui/mobile/layout/CardAnimation.js +95 -72
- package/source/class/qx/ui/mobile/layout/HBox.js +9 -12
- package/source/class/qx/ui/mobile/layout/VBox.js +9 -12
- package/source/class/qx/ui/mobile/list/IListDelegate.js +5 -9
- package/source/class/qx/ui/mobile/list/List.js +172 -183
- package/source/class/qx/ui/mobile/list/provider/Provider.js +58 -65
- package/source/class/qx/ui/mobile/list/renderer/Abstract.js +54 -82
- package/source/class/qx/ui/mobile/list/renderer/Default.js +39 -55
- package/source/class/qx/ui/mobile/list/renderer/group/Abstract.js +20 -33
- package/source/class/qx/ui/mobile/list/renderer/group/Default.js +29 -45
- package/source/class/qx/ui/mobile/navigationbar/BackButton.js +11 -15
- package/source/class/qx/ui/mobile/navigationbar/Button.js +11 -15
- package/source/class/qx/ui/mobile/navigationbar/NavigationBar.js +23 -29
- package/source/class/qx/ui/mobile/navigationbar/Title.js +12 -20
- package/source/class/qx/ui/mobile/page/Manager.js +195 -169
- package/source/class/qx/ui/mobile/page/NavigationPage.js +132 -196
- package/source/class/qx/ui/mobile/page/Page.js +109 -148
- package/source/class/qx/ui/mobile/tabbar/TabBar.js +41 -62
- package/source/class/qx/ui/mobile/tabbar/TabButton.js +19 -28
- package/source/class/qx/ui/mobile/toolbar/Button.js +7 -11
- package/source/class/qx/ui/mobile/toolbar/Separator.js +11 -15
- package/source/class/qx/ui/mobile/toolbar/ToolBar.js +30 -39
- package/source/class/qx/ui/popup/Manager.js +41 -53
- package/source/class/qx/ui/popup/Popup.js +22 -47
- package/source/class/qx/ui/popup/__init__.js +32 -32
- package/source/class/qx/ui/progressive/Progressive.js +96 -137
- package/source/class/qx/ui/progressive/State.js +12 -19
- package/source/class/qx/ui/progressive/headfoot/Abstract.js +10 -15
- package/source/class/qx/ui/progressive/headfoot/Null.js +4 -7
- package/source/class/qx/ui/progressive/headfoot/Progress.js +67 -69
- package/source/class/qx/ui/progressive/headfoot/TableHeading.js +42 -54
- package/source/class/qx/ui/progressive/model/Abstract.js +8 -15
- package/source/class/qx/ui/progressive/model/Default.js +17 -29
- package/source/class/qx/ui/progressive/renderer/Abstract.js +6 -11
- package/source/class/qx/ui/progressive/renderer/FunctionCaller.js +4 -7
- package/source/class/qx/ui/progressive/renderer/table/Row.js +215 -242
- package/source/class/qx/ui/progressive/renderer/table/Widths.js +32 -47
- package/source/class/qx/ui/progressive/renderer/table/cell/Abstract.js +17 -24
- package/source/class/qx/ui/progressive/renderer/table/cell/Boolean.js +68 -79
- package/source/class/qx/ui/progressive/renderer/table/cell/Conditional.js +146 -199
- package/source/class/qx/ui/progressive/renderer/table/cell/Default.js +14 -32
- package/source/class/qx/ui/progressive/renderer/table/cell/Html.js +2 -3
- package/source/class/qx/ui/progressive/renderer/table/cell/Icon.js +38 -53
- package/source/class/qx/ui/progressive/renderer/table/cell/Image.js +20 -42
- package/source/class/qx/ui/progressive/renderer/table/cell/String.js +6 -12
- package/source/class/qx/ui/progressive/structure/Abstract.js +14 -26
- package/source/class/qx/ui/progressive/structure/Default.js +20 -40
- package/source/class/qx/ui/root/Abstract.js +73 -90
- package/source/class/qx/ui/root/Application.js +57 -61
- package/source/class/qx/ui/root/Inline.js +78 -64
- package/source/class/qx/ui/root/Page.js +25 -46
- package/source/class/qx/ui/splitpane/Blocker.js +20 -30
- package/source/class/qx/ui/splitpane/HLayout.js +53 -49
- package/source/class/qx/ui/splitpane/Pane.js +112 -150
- package/source/class/qx/ui/splitpane/Slider.js +9 -15
- package/source/class/qx/ui/splitpane/Splitter.js +27 -46
- package/source/class/qx/ui/splitpane/VLayout.js +53 -49
- package/source/class/qx/ui/style/Stylesheet.js +12 -19
- package/source/class/qx/ui/table/ICellEditorFactory.js +4 -8
- package/source/class/qx/ui/table/ICellRenderer.js +3 -7
- package/source/class/qx/ui/table/IColumnMenuButton.js +6 -11
- package/source/class/qx/ui/table/IColumnMenuItem.js +5 -8
- package/source/class/qx/ui/table/IHeaderRenderer.js +4 -8
- package/source/class/qx/ui/table/IRowRenderer.js +6 -12
- package/source/class/qx/ui/table/ITableModel.js +23 -41
- package/source/class/qx/ui/table/MTableContextMenu.js +25 -28
- package/source/class/qx/ui/table/Table.js +556 -748
- package/source/class/qx/ui/table/celleditor/AbstractField.js +16 -26
- package/source/class/qx/ui/table/celleditor/CheckBox.js +15 -16
- package/source/class/qx/ui/table/celleditor/ComboBox.js +24 -34
- package/source/class/qx/ui/table/celleditor/Dynamic.js +25 -32
- package/source/class/qx/ui/table/celleditor/PasswordField.js +4 -8
- package/source/class/qx/ui/table/celleditor/SelectBox.js +29 -38
- package/source/class/qx/ui/table/celleditor/TextField.js +9 -14
- package/source/class/qx/ui/table/cellrenderer/Abstract.js +78 -73
- package/source/class/qx/ui/table/cellrenderer/AbstractImage.js +65 -84
- package/source/class/qx/ui/table/cellrenderer/Boolean.js +36 -50
- package/source/class/qx/ui/table/cellrenderer/Conditional.js +74 -63
- package/source/class/qx/ui/table/cellrenderer/Date.js +12 -22
- package/source/class/qx/ui/table/cellrenderer/Debug.js +9 -9
- package/source/class/qx/ui/table/cellrenderer/Default.js +30 -52
- package/source/class/qx/ui/table/cellrenderer/Dynamic.js +13 -24
- package/source/class/qx/ui/table/cellrenderer/Html.js +6 -8
- package/source/class/qx/ui/table/cellrenderer/Image.js +13 -26
- package/source/class/qx/ui/table/cellrenderer/Number.js +13 -24
- package/source/class/qx/ui/table/cellrenderer/Password.js +8 -11
- package/source/class/qx/ui/table/cellrenderer/Replace.js +27 -42
- package/source/class/qx/ui/table/cellrenderer/String.js +5 -7
- package/source/class/qx/ui/table/columnmenu/Button.js +19 -29
- package/source/class/qx/ui/table/columnmenu/MenuItem.js +11 -19
- package/source/class/qx/ui/table/columnmenu/__init__.js +4 -4
- package/source/class/qx/ui/table/columnmenu/grid/__init__.js +4 -4
- package/source/class/qx/ui/table/columnmenu/simple/__init__.js +4 -4
- package/source/class/qx/ui/table/columnmodel/Basic.js +193 -215
- package/source/class/qx/ui/table/columnmodel/Resize.js +65 -111
- package/source/class/qx/ui/table/columnmodel/resizebehavior/Abstract.js +17 -24
- package/source/class/qx/ui/table/columnmodel/resizebehavior/Default.js +66 -117
- package/source/class/qx/ui/table/headerrenderer/Default.js +25 -46
- package/source/class/qx/ui/table/headerrenderer/HeaderCell.js +36 -51
- package/source/class/qx/ui/table/headerrenderer/Icon.js +11 -27
- package/source/class/qx/ui/table/model/Abstract.js +52 -62
- package/source/class/qx/ui/table/model/Filtered.js +121 -153
- package/source/class/qx/ui/table/model/Remote.js +166 -271
- package/source/class/qx/ui/table/model/Simple.js +215 -250
- package/source/class/qx/ui/table/pane/CellEvent.js +25 -32
- package/source/class/qx/ui/table/pane/Clipper.js +8 -12
- package/source/class/qx/ui/table/pane/FocusIndicator.js +42 -48
- package/source/class/qx/ui/table/pane/Header.js +45 -86
- package/source/class/qx/ui/table/pane/Model.js +80 -97
- package/source/class/qx/ui/table/pane/Pane.js +129 -189
- package/source/class/qx/ui/table/pane/Scroller.js +542 -659
- package/source/class/qx/ui/table/rowrenderer/Default.js +75 -86
- package/source/class/qx/ui/table/selection/Manager.js +23 -57
- package/source/class/qx/ui/table/selection/Model.js +89 -179
- package/source/class/qx/ui/tabview/Page.js +48 -79
- package/source/class/qx/ui/tabview/TabButton.js +45 -72
- package/source/class/qx/ui/tabview/TabView.js +94 -141
- package/source/class/qx/ui/toolbar/Button.js +13 -18
- package/source/class/qx/ui/toolbar/CheckBox.js +13 -17
- package/source/class/qx/ui/toolbar/MenuButton.js +18 -34
- package/source/class/qx/ui/toolbar/Part.js +42 -64
- package/source/class/qx/ui/toolbar/PartContainer.js +19 -28
- package/source/class/qx/ui/toolbar/RadioButton.js +12 -19
- package/source/class/qx/ui/toolbar/Separator.js +15 -25
- package/source/class/qx/ui/toolbar/SplitButton.js +19 -28
- package/source/class/qx/ui/toolbar/ToolBar.js +182 -232
- package/source/class/qx/ui/tooltip/Manager.js +125 -123
- package/source/class/qx/ui/tooltip/ToolTip.js +49 -79
- package/source/class/qx/ui/tooltip/__init__.js +23 -23
- package/source/class/qx/ui/tree/Tree.js +95 -148
- package/source/class/qx/ui/tree/TreeFile.js +8 -15
- package/source/class/qx/ui/tree/TreeFolder.js +8 -15
- package/source/class/qx/ui/tree/VirtualTree.js +207 -333
- package/source/class/qx/ui/tree/VirtualTreeItem.js +30 -45
- package/source/class/qx/ui/tree/__init__.js +50 -50
- package/source/class/qx/ui/tree/core/AbstractItem.js +98 -152
- package/source/class/qx/ui/tree/core/AbstractTreeItem.js +83 -137
- package/source/class/qx/ui/tree/core/FolderOpenButton.js +15 -34
- package/source/class/qx/ui/tree/core/IVirtualTree.js +13 -33
- package/source/class/qx/ui/tree/core/IVirtualTreeDelegate.js +9 -16
- package/source/class/qx/ui/tree/core/MWidgetController.js +58 -69
- package/source/class/qx/ui/tree/core/OpenCloseController.js +29 -35
- package/source/class/qx/ui/tree/core/Util.js +12 -16
- package/source/class/qx/ui/tree/provider/IVirtualTreeProvider.js +10 -23
- package/source/class/qx/ui/tree/provider/WidgetProvider.js +39 -67
- package/source/class/qx/ui/tree/selection/SelectionManager.js +27 -41
- package/source/class/qx/ui/treevirtual/DefaultDataCellRenderer.js +2 -3
- package/source/class/qx/ui/treevirtual/MFamily.js +26 -63
- package/source/class/qx/ui/treevirtual/MNode.js +43 -103
- package/source/class/qx/ui/treevirtual/MTreePrimitive.js +41 -52
- package/source/class/qx/ui/treevirtual/SelectionManager.js +44 -58
- package/source/class/qx/ui/treevirtual/SimpleTreeDataCellRenderer.js +172 -229
- package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +256 -367
- package/source/class/qx/ui/treevirtual/SimpleTreeDataRowRenderer.js +8 -18
- package/source/class/qx/ui/treevirtual/TreeVirtual.js +155 -250
- package/source/class/qx/ui/treevirtual/celleditor/NodeEditor.js +10 -16
- package/source/class/qx/ui/treevirtual/pane/Scroller.js +14 -11
- package/source/class/qx/ui/virtual/__init__.js +4 -4
- package/source/class/qx/ui/virtual/behavior/Prefetch.js +71 -86
- package/source/class/qx/ui/virtual/cell/Abstract.js +18 -27
- package/source/class/qx/ui/virtual/cell/AbstractImage.js +42 -51
- package/source/class/qx/ui/virtual/cell/AbstractWidget.js +25 -49
- package/source/class/qx/ui/virtual/cell/Boolean.js +31 -44
- package/source/class/qx/ui/virtual/cell/Cell.js +143 -183
- package/source/class/qx/ui/virtual/cell/CellStylesheet.js +31 -38
- package/source/class/qx/ui/virtual/cell/Date.js +15 -24
- package/source/class/qx/ui/virtual/cell/Html.js +9 -20
- package/source/class/qx/ui/virtual/cell/ICell.js +4 -6
- package/source/class/qx/ui/virtual/cell/IWidgetCell.js +7 -12
- package/source/class/qx/ui/virtual/cell/IWidgetCellDelegate.js +4 -6
- package/source/class/qx/ui/virtual/cell/Image.js +8 -14
- package/source/class/qx/ui/virtual/cell/Number.js +14 -23
- package/source/class/qx/ui/virtual/cell/String.js +11 -20
- package/source/class/qx/ui/virtual/cell/WidgetCell.js +13 -16
- package/source/class/qx/ui/virtual/cell/__init__.js +4 -4
- package/source/class/qx/ui/virtual/core/Axis.js +75 -103
- package/source/class/qx/ui/virtual/core/CellEvent.js +23 -31
- package/source/class/qx/ui/virtual/core/IHtmlCellProvider.js +4 -6
- package/source/class/qx/ui/virtual/core/ILayer.js +5 -15
- package/source/class/qx/ui/virtual/core/IWidgetCellProvider.js +5 -7
- package/source/class/qx/ui/virtual/core/Pane.js +199 -242
- package/source/class/qx/ui/virtual/core/Scroller.js +25 -43
- package/source/class/qx/ui/virtual/layer/Abstract.js +44 -83
- package/source/class/qx/ui/virtual/layer/AbstractBackground.js +47 -68
- package/source/class/qx/ui/virtual/layer/CellSpanManager.js +74 -96
- package/source/class/qx/ui/virtual/layer/Column.js +26 -36
- package/source/class/qx/ui/virtual/layer/GridLines.js +43 -70
- package/source/class/qx/ui/virtual/layer/HtmlCell.js +34 -32
- package/source/class/qx/ui/virtual/layer/HtmlCellSpan.js +54 -56
- package/source/class/qx/ui/virtual/layer/Row.js +28 -36
- package/source/class/qx/ui/virtual/layer/WidgetCell.js +87 -123
- package/source/class/qx/ui/virtual/layer/WidgetCellSpan.js +123 -124
- package/source/class/qx/ui/virtual/selection/Abstract.js +26 -54
- package/source/class/qx/ui/virtual/selection/CellLines.js +11 -21
- package/source/class/qx/ui/virtual/selection/CellRectangle.js +45 -73
- package/source/class/qx/ui/virtual/selection/Column.js +16 -35
- package/source/class/qx/ui/virtual/selection/ISelectionDelegate.js +5 -9
- package/source/class/qx/ui/virtual/selection/MModel.js +84 -122
- package/source/class/qx/ui/virtual/selection/Row.js +29 -61
- package/source/class/qx/ui/website/Accordion.js +39 -42
- package/source/class/qx/ui/website/Button.js +17 -25
- package/source/class/qx/ui/website/Calendar.js +243 -172
- package/source/class/qx/ui/website/Carousel.js +169 -155
- package/source/class/qx/ui/website/DatePicker.js +99 -85
- package/source/class/qx/ui/website/Rating.js +35 -53
- package/source/class/qx/ui/website/Slider.js +174 -153
- package/source/class/qx/ui/website/Table.js +482 -456
- package/source/class/qx/ui/website/Tabs.js +225 -180
- package/source/class/qx/ui/website/Widget.js +39 -52
- package/source/class/qx/ui/window/Desktop.js +14 -12
- package/source/class/qx/ui/window/IDesktop.js +8 -10
- package/source/class/qx/ui/window/IWindowManager.js +7 -9
- package/source/class/qx/ui/window/MDesktop.js +34 -62
- package/source/class/qx/ui/window/Manager.js +31 -57
- package/source/class/qx/ui/window/Window.js +250 -351
- package/source/class/qx/util/AliasManager.js +23 -42
- package/source/class/qx/util/Animation.js +248 -191
- package/source/class/qx/util/Base64.js +144 -89
- package/source/class/qx/util/ColorUtil.js +253 -287
- package/source/class/qx/util/DeferredCall.js +21 -30
- package/source/class/qx/util/DeferredCallManager.js +23 -44
- package/source/class/qx/util/Delegate.js +4 -10
- package/source/class/qx/util/DisposeUtil.js +76 -70
- package/source/class/qx/util/DynamicScriptLoader.js +83 -66
- package/source/class/qx/util/EditDistance.js +64 -58
- package/source/class/qx/util/ExtendedColor.js +157 -163
- package/source/class/qx/util/Function.js +8 -8
- package/source/class/qx/util/LibraryManager.js +11 -18
- package/source/class/qx/util/OOUtil.js +17 -36
- package/source/class/qx/util/ObjectPool.js +19 -45
- package/source/class/qx/util/Permutation.js +9 -16
- package/source/class/qx/util/PropertyUtil.js +58 -70
- package/source/class/qx/util/Request.js +27 -16
- package/source/class/qx/util/ResourceManager.js +103 -104
- package/source/class/qx/util/ResponseParser.js +14 -21
- package/source/class/qx/util/RingBuffer.js +46 -48
- package/source/class/qx/util/Serializer.js +103 -68
- package/source/class/qx/util/StringBuilder.js +11 -22
- package/source/class/qx/util/StringEscape.js +15 -29
- package/source/class/qx/util/StringSplit.js +18 -21
- package/source/class/qx/util/TimerManager.js +61 -70
- package/source/class/qx/util/Uri.js +42 -30
- package/source/class/qx/util/Uuid.js +50 -35
- package/source/class/qx/util/Validate.js +88 -73
- package/source/class/qx/util/ValueManager.js +17 -29
- package/source/class/qx/util/Wheel.js +22 -16
- package/source/class/qx/util/format/DateFormat.js +853 -763
- package/source/class/qx/util/format/IFormat.js +4 -8
- package/source/class/qx/util/format/NumberFormat.js +84 -91
- package/source/class/qx/util/fsm/FiniteStateMachine.js +323 -382
- package/source/class/qx/util/fsm/State.js +210 -249
- package/source/class/qx/util/fsm/Transition.js +138 -160
- package/source/class/qx/util/placement/AbstractAxis.js +12 -14
- package/source/class/qx/util/placement/BestFitAxis.js +5 -8
- package/source/class/qx/util/placement/DirectAxis.js +5 -7
- package/source/class/qx/util/placement/KeepAlignAxis.js +8 -14
- package/source/class/qx/util/placement/Placement.js +39 -56
- package/source/class/qx/util/placement/__init__.js +4 -4
- package/source/class/qx/xml/Document.js +21 -34
- package/source/class/qx/xml/Element.js +90 -73
- package/source/class/qx/xml/String.js +15 -21
- package/source/class/qxWeb.js +102 -69
- package/source/resource/qx/mobile/js/iscroll.js +1328 -982
- package/source/resource/qx/mobile/js/iscroll.min.js +1081 -1
- package/source/resource/qx/test/dynamicscriptloader/first.js +1 -1
- package/source/resource/qx/test/dynamicscriptloader/second.js +1 -1
- package/source/resource/qx/test/dynamicscriptloader/third.js +1 -1
- package/source/resource/qx/test/script.js +1 -1
- package/source/resource/qx/test/webworker.js +2 -2
- package/source/resource/qx/tool/loadsass.js +16 -13
- package/source/resource/qx/tool/schema/compile-1-0-0.json +13 -13
- package/source/resource/qx/tool/website/build/assets/bluebird.min.js +4593 -9
- package/source/resource/qx/tool/website/build/assets/buttons.js +391 -1
- package/source/resource/qx/tool/website/build/assets/fontawesome-all.js +8963 -1
- package/source/resource/qx/tool/website/build/assets/jquery.js +5452 -3
- package/source/resource/qx/tool/website/build/diagnostics/dependson.js +31 -31
- package/source/resource/qx/tool/website/build/diagnostics/requiredby.js +32 -36
- package/source/resource/qx/tool/website/build/scripts/serve.js +87 -66
- package/source/resource/qx/tool/website/src/assets/bluebird.min.js +4593 -9
- package/source/resource/qx/tool/website/src/assets/buttons.js +391 -1
- package/source/resource/qx/tool/website/src/assets/fontawesome-all.js +8963 -1
- package/source/resource/qx/tool/website/src/assets/jquery.js +5452 -3
- package/source/resource/qx/tool/website/src/diagnostics/dependson.js +31 -31
- package/source/resource/qx/tool/website/src/diagnostics/requiredby.js +32 -36
- package/source/resource/qx/tool/website/src/scripts/serve.js +87 -66
- package/source/translation/hr.po +297 -0
- package/lib/resource/qx/static/blank.gif +0 -0
- package/source/class/qx/io/remote/Exchange.js +0 -1063
- package/source/class/qx/io/remote/Request.js +0 -1021
- package/source/class/qx/io/remote/RequestQueue.js +0 -521
- package/source/class/qx/io/remote/Response.js +0 -137
- package/source/class/qx/io/remote/Rpc.js +0 -1075
- package/source/class/qx/io/remote/RpcError.js +0 -198
- package/source/class/qx/io/remote/__init__.js +0 -88
- package/source/class/qx/io/remote/transport/Abstract.js +0 -513
- package/source/class/qx/io/remote/transport/Iframe.js +0 -652
- package/source/class/qx/io/remote/transport/Script.js +0 -475
- package/source/class/qx/io/remote/transport/XmlHttp.js +0 -1019
- package/source/class/qx/io/remote/transport/__init__.js +0 -3
- package/source/class/qx/test/io/remote/AbstractRequest.js +0 -150
- package/source/class/qx/test/io/remote/RequestIframe.js +0 -105
- package/source/class/qx/test/io/remote/RequestXhr.js +0 -151
- package/source/class/qx/test/io/remote/Rpc.js +0 -205
- package/source/class/qx/test/io/remote/__init__.js +0 -4
- package/source/class/qx/test/io/remote/transport/Iframe.js +0 -67
- package/source/class/qx/test/io/remote/transport/XmlHttp.js +0 -133
- package/source/class/qx/test/io/remote/transport/__init__.js +0 -4
package/source/class/qx/Class.js
CHANGED
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
*
|
|
61
61
|
* By using <code>qx.Class</code> within an app, the native JS data types are
|
|
62
62
|
* conveniently polyfilled according to {@link qx.lang.normalize}.
|
|
63
|
-
*
|
|
64
|
-
* Annotations can be added to classes, constructors, destructors, and methods, properties, and statics -
|
|
63
|
+
*
|
|
64
|
+
* Annotations can be added to classes, constructors, destructors, and methods, properties, and statics -
|
|
65
65
|
* see <code>qx.Annotation</code> for examples and means access annotations at runtime.
|
|
66
66
|
*
|
|
67
67
|
* @require(qx.Interface)
|
|
@@ -74,15 +74,15 @@
|
|
|
74
74
|
* @require(qx.lang.normalize.Object)
|
|
75
75
|
* @require(qx.lang.normalize.Number)
|
|
76
76
|
*/
|
|
77
|
-
qx.Bootstrap.define("qx.Class",
|
|
78
|
-
{
|
|
79
|
-
statics :
|
|
80
|
-
{
|
|
77
|
+
qx.Bootstrap.define("qx.Class", {
|
|
78
|
+
statics: {
|
|
81
79
|
/**
|
|
82
80
|
* A static reference to the property implementation in the case it
|
|
83
81
|
* should be included.
|
|
84
82
|
*/
|
|
85
|
-
__Property
|
|
83
|
+
__Property: qx.core.Environment.get("module.property")
|
|
84
|
+
? qx.core.Property
|
|
85
|
+
: null,
|
|
86
86
|
|
|
87
87
|
/*
|
|
88
88
|
---------------------------------------------------------------------------
|
|
@@ -158,35 +158,41 @@ qx.Bootstrap.define("qx.Class",
|
|
|
158
158
|
* </table>
|
|
159
159
|
* @return {Class} The defined class
|
|
160
160
|
*/
|
|
161
|
-
define
|
|
161
|
+
define(name, config) {
|
|
162
162
|
try {
|
|
163
163
|
return this.__defineImpl(name, config);
|
|
164
|
-
} catch(ex) {
|
|
164
|
+
} catch (ex) {
|
|
165
165
|
qx.Class.$$brokenClassDefinitions = true;
|
|
166
166
|
throw ex;
|
|
167
167
|
}
|
|
168
168
|
},
|
|
169
169
|
|
|
170
170
|
/**
|
|
171
|
-
* Implementation behind `define` - this exists just for the simplicity of wrapping an exception
|
|
171
|
+
* Implementation behind `define` - this exists just for the simplicity of wrapping an exception
|
|
172
172
|
* handler around the code
|
|
173
|
-
*
|
|
173
|
+
*
|
|
174
174
|
* @param {String} name @see `define()`
|
|
175
175
|
* @param {*} config @see `define()`
|
|
176
176
|
* @returns @see `define()`
|
|
177
177
|
*/
|
|
178
|
-
__defineImpl
|
|
178
|
+
__defineImpl(name, config) {
|
|
179
179
|
if (!config) {
|
|
180
180
|
config = {};
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
// Normalize include to array
|
|
184
|
-
if (
|
|
184
|
+
if (
|
|
185
|
+
config.include &&
|
|
186
|
+
!(qx.Bootstrap.getClass(config.include) === "Array")
|
|
187
|
+
) {
|
|
185
188
|
config.include = [config.include];
|
|
186
189
|
}
|
|
187
190
|
|
|
188
191
|
// Normalize implement to array
|
|
189
|
-
if (
|
|
192
|
+
if (
|
|
193
|
+
config.implement &&
|
|
194
|
+
!(qx.Bootstrap.getClass(config.implement) === "Array")
|
|
195
|
+
) {
|
|
190
196
|
config.implement = [config.implement];
|
|
191
197
|
}
|
|
192
198
|
|
|
@@ -201,25 +207,34 @@ qx.Bootstrap.define("qx.Class",
|
|
|
201
207
|
if (qx.core.Environment.get("qx.debug")) {
|
|
202
208
|
try {
|
|
203
209
|
this.__validateConfig(name, config);
|
|
204
|
-
} catch(ex) {
|
|
210
|
+
} catch (ex) {
|
|
205
211
|
if (implicitType) {
|
|
206
|
-
ex.message =
|
|
212
|
+
ex.message =
|
|
213
|
+
'Assumed static class because no "extend" key was found. ' +
|
|
214
|
+
ex.message;
|
|
207
215
|
}
|
|
208
216
|
throw ex;
|
|
209
217
|
}
|
|
210
218
|
}
|
|
211
219
|
|
|
212
220
|
// Create the class
|
|
213
|
-
var clazz = this.__createClass(
|
|
214
|
-
|
|
221
|
+
var clazz = this.__createClass(
|
|
222
|
+
name,
|
|
223
|
+
config.type,
|
|
224
|
+
config.extend,
|
|
225
|
+
config.statics,
|
|
226
|
+
config.construct,
|
|
227
|
+
config.destruct,
|
|
228
|
+
config.include
|
|
229
|
+
);
|
|
230
|
+
|
|
215
231
|
// Initialise class and constructor/destructor annotations
|
|
216
|
-
[
|
|
232
|
+
["@", "@construct", "@destruct"].forEach(function (id) {
|
|
217
233
|
this.__attachAnno(clazz, id, null, config[id]);
|
|
218
234
|
}, this);
|
|
219
235
|
|
|
220
236
|
// Members, properties, events and mixins are only allowed for non-static classes
|
|
221
|
-
if (config.extend)
|
|
222
|
-
{
|
|
237
|
+
if (config.extend) {
|
|
223
238
|
// Attach properties
|
|
224
239
|
if (config.properties) {
|
|
225
240
|
this.__addProperties(clazz, config.properties, true);
|
|
@@ -237,73 +252,65 @@ qx.Bootstrap.define("qx.Class",
|
|
|
237
252
|
|
|
238
253
|
// Include mixins
|
|
239
254
|
// Must be the last here to detect conflicts
|
|
240
|
-
if (config.include)
|
|
241
|
-
|
|
242
|
-
for (var i=0, l=config.include.length; i<l; i++) {
|
|
255
|
+
if (config.include) {
|
|
256
|
+
for (var i = 0, l = config.include.length; i < l; i++) {
|
|
243
257
|
this.__addMixin(clazz, config.include[i], false);
|
|
244
258
|
}
|
|
245
259
|
}
|
|
246
260
|
}
|
|
247
261
|
// If config has a 'extend' key but it's null or undefined
|
|
248
|
-
else if (
|
|
249
|
-
|
|
250
|
-
|
|
262
|
+
else if (
|
|
263
|
+
config.hasOwnProperty("extend") &&
|
|
264
|
+
qx.core.Environment.get("qx.debug")
|
|
265
|
+
) {
|
|
266
|
+
throw new Error('"extend" parameter is null or undefined');
|
|
251
267
|
}
|
|
252
268
|
|
|
253
269
|
// Process environment
|
|
254
|
-
if (config.environment)
|
|
255
|
-
{
|
|
270
|
+
if (config.environment) {
|
|
256
271
|
for (var key in config.environment) {
|
|
257
272
|
qx.core.Environment.add(key, config.environment[key]);
|
|
258
273
|
}
|
|
259
274
|
}
|
|
260
275
|
|
|
261
276
|
// Interface support for non-static classes
|
|
262
|
-
if (config.implement)
|
|
263
|
-
|
|
264
|
-
for (var i=0, l=config.implement.length; i<l; i++) {
|
|
277
|
+
if (config.implement) {
|
|
278
|
+
for (var i = 0, l = config.implement.length; i < l; i++) {
|
|
265
279
|
this.__addInterface(clazz, config.implement[i]);
|
|
266
280
|
}
|
|
267
281
|
}
|
|
268
282
|
|
|
269
|
-
|
|
270
283
|
if (qx.core.Environment.get("qx.debug")) {
|
|
271
284
|
this.__validateAbstractInterfaces(clazz);
|
|
272
285
|
}
|
|
273
286
|
|
|
274
|
-
|
|
275
287
|
// Process defer
|
|
276
|
-
if (config.defer)
|
|
277
|
-
{
|
|
288
|
+
if (config.defer) {
|
|
278
289
|
config.defer.self = clazz;
|
|
279
|
-
qx.Bootstrap.addPendingDefer(clazz, function() {
|
|
290
|
+
qx.Bootstrap.addPendingDefer(clazz, function () {
|
|
280
291
|
clazz = qx.Class.getByName(clazz.classname);
|
|
281
|
-
config.defer(clazz, clazz.prototype,
|
|
282
|
-
{
|
|
283
|
-
|
|
284
|
-
{
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
}
|
|
292
|
-
});
|
|
292
|
+
config.defer(clazz, clazz.prototype, {
|
|
293
|
+
add(name, config) {
|
|
294
|
+
// build pseudo properties map
|
|
295
|
+
var properties = {};
|
|
296
|
+
properties[name] = config;
|
|
297
|
+
|
|
298
|
+
// execute generic property handler
|
|
299
|
+
qx.Class.__addProperties(clazz, properties, true);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
293
302
|
});
|
|
294
303
|
}
|
|
295
304
|
|
|
296
305
|
return clazz;
|
|
297
306
|
},
|
|
298
307
|
|
|
299
|
-
|
|
300
308
|
/**
|
|
301
309
|
* Removes a class from qooxdoo defined by {@link #define}
|
|
302
310
|
*
|
|
303
311
|
* @param name {String} Name of the class
|
|
304
312
|
*/
|
|
305
|
-
undefine
|
|
306
|
-
{
|
|
313
|
+
undefine(name) {
|
|
307
314
|
// first, delete the class from the registry
|
|
308
315
|
delete this.$$registry[name];
|
|
309
316
|
// delete the class reference from the namespaces and all empty namespaces
|
|
@@ -319,9 +326,10 @@ qx.Bootstrap.define("qx.Class",
|
|
|
319
326
|
var last = objects[i];
|
|
320
327
|
var parent = objects[i - 1];
|
|
321
328
|
if (
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
329
|
+
// The class being undefined, but parent classes in case it is a nested class that is being undefined
|
|
330
|
+
(i == objects.length - 1 && qx.Bootstrap.isFunction(last)) ||
|
|
331
|
+
qx.Bootstrap.objectGetLength(last) === 0
|
|
332
|
+
) {
|
|
325
333
|
delete parent[ns[i - 1]];
|
|
326
334
|
} else {
|
|
327
335
|
break;
|
|
@@ -329,7 +337,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
329
337
|
}
|
|
330
338
|
},
|
|
331
339
|
|
|
332
|
-
|
|
333
340
|
/**
|
|
334
341
|
* Whether the given class exists
|
|
335
342
|
*
|
|
@@ -337,19 +344,17 @@ qx.Bootstrap.define("qx.Class",
|
|
|
337
344
|
* @param name {String} class name to check
|
|
338
345
|
* @return {Boolean} true if class exists
|
|
339
346
|
*/
|
|
340
|
-
isDefined
|
|
341
|
-
|
|
347
|
+
isDefined: qx.util.OOUtil.classIsDefined,
|
|
342
348
|
|
|
343
349
|
/**
|
|
344
350
|
* Determine the total number of classes
|
|
345
351
|
*
|
|
346
352
|
* @return {Number} the total number of classes
|
|
347
353
|
*/
|
|
348
|
-
getTotalNumber
|
|
354
|
+
getTotalNumber() {
|
|
349
355
|
return qx.Bootstrap.objectGetLength(this.$$registry);
|
|
350
356
|
},
|
|
351
357
|
|
|
352
|
-
|
|
353
358
|
/**
|
|
354
359
|
* Find a class by its name
|
|
355
360
|
*
|
|
@@ -357,8 +362,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
357
362
|
* @param name {String} class name to resolve
|
|
358
363
|
* @return {Class} the class
|
|
359
364
|
*/
|
|
360
|
-
getByName
|
|
361
|
-
|
|
365
|
+
getByName: qx.Bootstrap.getByName,
|
|
362
366
|
|
|
363
367
|
/**
|
|
364
368
|
* Include all features of the given mixin into the class. The mixin must
|
|
@@ -368,12 +372,14 @@ qx.Bootstrap.define("qx.Class",
|
|
|
368
372
|
* @param clazz {Class} An existing class which should be augmented by including a mixin.
|
|
369
373
|
* @param mixin {Mixin} The mixin to be included.
|
|
370
374
|
*/
|
|
371
|
-
include
|
|
372
|
-
|
|
373
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
374
|
-
{
|
|
375
|
+
include(clazz, mixin) {
|
|
376
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
375
377
|
if (!mixin) {
|
|
376
|
-
throw new Error(
|
|
378
|
+
throw new Error(
|
|
379
|
+
"The mixin to include into class '" +
|
|
380
|
+
clazz.classname +
|
|
381
|
+
"' is undefined/null!"
|
|
382
|
+
);
|
|
377
383
|
}
|
|
378
384
|
|
|
379
385
|
qx.Mixin.isCompatible(mixin, clazz);
|
|
@@ -382,7 +388,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
382
388
|
qx.Class.__addMixin(clazz, mixin, false);
|
|
383
389
|
},
|
|
384
390
|
|
|
385
|
-
|
|
386
391
|
/**
|
|
387
392
|
* Include all features of the given mixin into the class. The mixin may
|
|
388
393
|
* include features, which are already defined in the target class. Existing
|
|
@@ -390,19 +395,21 @@ qx.Bootstrap.define("qx.Class",
|
|
|
390
395
|
* Please keep in mind that this functionality is not intended for regular
|
|
391
396
|
* use, but as a formalized way (and a last resort) in order to patch
|
|
392
397
|
* existing classes.
|
|
393
|
-
*
|
|
398
|
+
*
|
|
394
399
|
* <b>WARNING</b>: You may break working classes and features.
|
|
395
400
|
*
|
|
396
401
|
* @param clazz {Class} An existing class which should be modified by including a mixin.
|
|
397
402
|
* @param mixin {Mixin} The mixin to be included.
|
|
398
403
|
* @return {Class} the new class definition
|
|
399
404
|
*/
|
|
400
|
-
patch
|
|
401
|
-
|
|
402
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
403
|
-
{
|
|
405
|
+
patch(clazz, mixin) {
|
|
406
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
404
407
|
if (!mixin) {
|
|
405
|
-
throw new Error(
|
|
408
|
+
throw new Error(
|
|
409
|
+
"The mixin to patch class '" +
|
|
410
|
+
clazz.classname +
|
|
411
|
+
"' is undefined/null!"
|
|
412
|
+
);
|
|
406
413
|
}
|
|
407
414
|
|
|
408
415
|
qx.Mixin.isCompatible(mixin, clazz);
|
|
@@ -411,19 +418,17 @@ qx.Bootstrap.define("qx.Class",
|
|
|
411
418
|
qx.Class.__addMixin(clazz, mixin, true);
|
|
412
419
|
return qx.Class.getByName(clazz.classname);
|
|
413
420
|
},
|
|
414
|
-
|
|
415
|
-
|
|
421
|
+
|
|
416
422
|
/**
|
|
417
423
|
* Detects whether the object is a Class (and not an instance of a class)
|
|
418
|
-
*
|
|
424
|
+
*
|
|
419
425
|
* @param obj {Object?} the object to inspect
|
|
420
426
|
* @return {Boolean} true if it is a class, false if it is anything else
|
|
421
427
|
*/
|
|
422
|
-
isClass
|
|
428
|
+
isClass(obj) {
|
|
423
429
|
return obj && obj.$$type === "Class" && obj.constructor === obj;
|
|
424
430
|
},
|
|
425
431
|
|
|
426
|
-
|
|
427
432
|
/**
|
|
428
433
|
* Whether a class is a direct or indirect sub class of another class,
|
|
429
434
|
* or both classes coincide.
|
|
@@ -432,8 +437,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
432
437
|
* @param superClass {Class} the potential super class
|
|
433
438
|
* @return {Boolean} whether clazz is a sub class of superClass.
|
|
434
439
|
*/
|
|
435
|
-
isSubClassOf
|
|
436
|
-
{
|
|
440
|
+
isSubClassOf(clazz, superClass) {
|
|
437
441
|
if (!clazz) {
|
|
438
442
|
return false;
|
|
439
443
|
}
|
|
@@ -449,7 +453,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
449
453
|
return false;
|
|
450
454
|
},
|
|
451
455
|
|
|
452
|
-
|
|
453
456
|
/**
|
|
454
457
|
* Returns the definition of the given property. Returns null
|
|
455
458
|
* if the property does not exist.
|
|
@@ -459,8 +462,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
459
462
|
* @param name {String} name of the class to check for
|
|
460
463
|
* @return {Map|null} whether the object support the given event.
|
|
461
464
|
*/
|
|
462
|
-
getPropertyDefinition
|
|
463
|
-
|
|
465
|
+
getPropertyDefinition: qx.util.OOUtil.getPropertyDefinition,
|
|
464
466
|
|
|
465
467
|
/**
|
|
466
468
|
* Returns a list of all properties supported by the given class
|
|
@@ -468,12 +470,10 @@ qx.Bootstrap.define("qx.Class",
|
|
|
468
470
|
* @param clazz {Class} Class to query
|
|
469
471
|
* @return {String[]} List of all property names
|
|
470
472
|
*/
|
|
471
|
-
getProperties
|
|
472
|
-
{
|
|
473
|
+
getProperties(clazz) {
|
|
473
474
|
var list = [];
|
|
474
475
|
|
|
475
|
-
while (clazz)
|
|
476
|
-
{
|
|
476
|
+
while (clazz) {
|
|
477
477
|
if (clazz.$$properties) {
|
|
478
478
|
list.push.apply(list, Object.keys(clazz.$$properties));
|
|
479
479
|
}
|
|
@@ -484,7 +484,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
484
484
|
return list;
|
|
485
485
|
},
|
|
486
486
|
|
|
487
|
-
|
|
488
487
|
/**
|
|
489
488
|
* Returns the class or one of its superclasses which contains the
|
|
490
489
|
* declaration for the given property in its class definition. Returns null
|
|
@@ -494,10 +493,8 @@ qx.Bootstrap.define("qx.Class",
|
|
|
494
493
|
* @param name {String} name of the property
|
|
495
494
|
* @return {Class | null} The class which includes the property
|
|
496
495
|
*/
|
|
497
|
-
getByProperty
|
|
498
|
-
|
|
499
|
-
while (clazz)
|
|
500
|
-
{
|
|
496
|
+
getByProperty(clazz, name) {
|
|
497
|
+
while (clazz) {
|
|
501
498
|
if (clazz.$$properties && clazz.$$properties[name]) {
|
|
502
499
|
return clazz;
|
|
503
500
|
}
|
|
@@ -508,7 +505,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
508
505
|
return null;
|
|
509
506
|
},
|
|
510
507
|
|
|
511
|
-
|
|
512
508
|
/**
|
|
513
509
|
* Whether a class has the given property
|
|
514
510
|
*
|
|
@@ -517,8 +513,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
517
513
|
* @param name {String} name of the property to check for
|
|
518
514
|
* @return {Boolean} whether the class includes the given property.
|
|
519
515
|
*/
|
|
520
|
-
hasProperty
|
|
521
|
-
|
|
516
|
+
hasProperty: qx.util.OOUtil.hasProperty,
|
|
522
517
|
|
|
523
518
|
/**
|
|
524
519
|
* Returns the event type of the given event. Returns null if
|
|
@@ -529,8 +524,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
529
524
|
* @param name {String} name of the event
|
|
530
525
|
* @return {String|null} Event type of the given event.
|
|
531
526
|
*/
|
|
532
|
-
getEventType
|
|
533
|
-
|
|
527
|
+
getEventType: qx.util.OOUtil.getEventType,
|
|
534
528
|
|
|
535
529
|
/**
|
|
536
530
|
* Whether a class supports the given event type
|
|
@@ -540,8 +534,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
540
534
|
* @param name {String} name of the event to check for
|
|
541
535
|
* @return {Boolean} whether the class supports the given event.
|
|
542
536
|
*/
|
|
543
|
-
supportsEvent
|
|
544
|
-
|
|
537
|
+
supportsEvent: qx.util.OOUtil.supportsEvent,
|
|
545
538
|
|
|
546
539
|
/**
|
|
547
540
|
* Whether a class directly includes a mixin.
|
|
@@ -550,11 +543,10 @@ qx.Bootstrap.define("qx.Class",
|
|
|
550
543
|
* @param mixin {Mixin} the mixin to check for
|
|
551
544
|
* @return {Boolean} whether the class includes the mixin directly.
|
|
552
545
|
*/
|
|
553
|
-
hasOwnMixin
|
|
546
|
+
hasOwnMixin(clazz, mixin) {
|
|
554
547
|
return clazz.$$includes && clazz.$$includes.indexOf(mixin) !== -1;
|
|
555
548
|
},
|
|
556
549
|
|
|
557
|
-
|
|
558
550
|
/**
|
|
559
551
|
* Returns the class or one of its superclasses which contains the
|
|
560
552
|
* declaration for the given mixin. Returns null if the mixin is not
|
|
@@ -564,18 +556,14 @@ qx.Bootstrap.define("qx.Class",
|
|
|
564
556
|
* @param mixin {Mixin} mixin to look for
|
|
565
557
|
* @return {Class | null} The class which directly includes the given mixin
|
|
566
558
|
*/
|
|
567
|
-
getByMixin
|
|
568
|
-
{
|
|
559
|
+
getByMixin(clazz, mixin) {
|
|
569
560
|
var list, i, l;
|
|
570
561
|
|
|
571
|
-
while (clazz)
|
|
572
|
-
|
|
573
|
-
if (clazz.$$includes)
|
|
574
|
-
{
|
|
562
|
+
while (clazz) {
|
|
563
|
+
if (clazz.$$includes) {
|
|
575
564
|
list = clazz.$$flatIncludes;
|
|
576
565
|
|
|
577
|
-
for (i=0, l=list.length; i<l; i++)
|
|
578
|
-
{
|
|
566
|
+
for (i = 0, l = list.length; i < l; i++) {
|
|
579
567
|
if (list[i] === mixin) {
|
|
580
568
|
return clazz;
|
|
581
569
|
}
|
|
@@ -588,7 +576,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
588
576
|
return null;
|
|
589
577
|
},
|
|
590
578
|
|
|
591
|
-
|
|
592
579
|
/**
|
|
593
580
|
* Returns a list of all mixins available in a given class.
|
|
594
581
|
*
|
|
@@ -596,8 +583,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
596
583
|
* @param clazz {Class} class which should be inspected
|
|
597
584
|
* @return {Mixin[]} array of mixins this class uses
|
|
598
585
|
*/
|
|
599
|
-
getMixins
|
|
600
|
-
|
|
586
|
+
getMixins: qx.util.OOUtil.getMixins,
|
|
601
587
|
|
|
602
588
|
/**
|
|
603
589
|
* Whether a given class or any of its superclasses includes a given mixin.
|
|
@@ -606,11 +592,10 @@ qx.Bootstrap.define("qx.Class",
|
|
|
606
592
|
* @param mixin {Mixin} the mixin to check for
|
|
607
593
|
* @return {Boolean} whether the class includes the mixin.
|
|
608
594
|
*/
|
|
609
|
-
hasMixin
|
|
595
|
+
hasMixin(clazz, mixin) {
|
|
610
596
|
return !!this.getByMixin(clazz, mixin);
|
|
611
597
|
},
|
|
612
598
|
|
|
613
|
-
|
|
614
599
|
/**
|
|
615
600
|
* Whether a given class directly includes an interface.
|
|
616
601
|
*
|
|
@@ -622,11 +607,10 @@ qx.Bootstrap.define("qx.Class",
|
|
|
622
607
|
* @param iface {Interface} the interface to check for
|
|
623
608
|
* @return {Boolean} whether the class includes the mixin directly.
|
|
624
609
|
*/
|
|
625
|
-
hasOwnInterface
|
|
610
|
+
hasOwnInterface(clazz, iface) {
|
|
626
611
|
return clazz.$$implements && clazz.$$implements.indexOf(iface) !== -1;
|
|
627
612
|
},
|
|
628
613
|
|
|
629
|
-
|
|
630
614
|
/**
|
|
631
615
|
* Returns the class or one of its super classes which contains the
|
|
632
616
|
* declaration of the given interface. Returns null if the interface is not
|
|
@@ -637,8 +621,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
637
621
|
* @param iface {Interface} interface to look for
|
|
638
622
|
* @return {Class | null} the class which directly implements the given interface
|
|
639
623
|
*/
|
|
640
|
-
getByInterface
|
|
641
|
-
|
|
624
|
+
getByInterface: qx.util.OOUtil.getByInterface,
|
|
642
625
|
|
|
643
626
|
/**
|
|
644
627
|
* Returns a list of all interfaces a given class has to implement.
|
|
@@ -646,12 +629,10 @@ qx.Bootstrap.define("qx.Class",
|
|
|
646
629
|
* @param clazz {Class} class which should be inspected
|
|
647
630
|
* @return {Interface[]} array of interfaces this class implements
|
|
648
631
|
*/
|
|
649
|
-
getInterfaces
|
|
650
|
-
{
|
|
632
|
+
getInterfaces(clazz) {
|
|
651
633
|
var list = [];
|
|
652
634
|
|
|
653
|
-
while (clazz)
|
|
654
|
-
{
|
|
635
|
+
while (clazz) {
|
|
655
636
|
if (clazz.$$implements) {
|
|
656
637
|
list.push.apply(list, clazz.$$flatImplements);
|
|
657
638
|
}
|
|
@@ -662,7 +643,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
662
643
|
return list;
|
|
663
644
|
},
|
|
664
645
|
|
|
665
|
-
|
|
666
646
|
/**
|
|
667
647
|
* Whether a given class or any of its super classes includes a given interface.
|
|
668
648
|
*
|
|
@@ -676,8 +656,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
676
656
|
* @param iface {Interface} the interface to check for
|
|
677
657
|
* @return {Boolean} whether the class includes the interface.
|
|
678
658
|
*/
|
|
679
|
-
hasInterface
|
|
680
|
-
|
|
659
|
+
hasInterface: qx.util.OOUtil.hasInterface,
|
|
681
660
|
|
|
682
661
|
/**
|
|
683
662
|
* Whether a given class complies to an interface.
|
|
@@ -690,8 +669,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
690
669
|
* @param iface {Interface} the interface to check for
|
|
691
670
|
* @return {Boolean} whether the class conforms to the interface.
|
|
692
671
|
*/
|
|
693
|
-
implementsInterface
|
|
694
|
-
{
|
|
672
|
+
implementsInterface(obj, iface) {
|
|
695
673
|
var clazz = obj.constructor;
|
|
696
674
|
|
|
697
675
|
if (this.hasInterface(clazz, iface)) {
|
|
@@ -709,25 +687,24 @@ qx.Bootstrap.define("qx.Class",
|
|
|
709
687
|
return false;
|
|
710
688
|
},
|
|
711
689
|
|
|
712
|
-
|
|
713
690
|
/**
|
|
714
691
|
* Helper method to handle singletons
|
|
715
692
|
*
|
|
716
693
|
* @internal
|
|
717
694
|
* @return {Object} The singleton instance
|
|
718
695
|
*/
|
|
719
|
-
getInstance
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
696
|
+
getInstance() {
|
|
697
|
+
if (this.$$instance === null) {
|
|
698
|
+
throw new Error(
|
|
699
|
+
"Singleton instance of " +
|
|
700
|
+
this +
|
|
701
|
+
" is requested, but not ready yet. This is most likely due to a recursive call in the constructor path."
|
|
702
|
+
);
|
|
725
703
|
}
|
|
726
704
|
|
|
727
|
-
if (!this.$$instance)
|
|
728
|
-
{
|
|
705
|
+
if (!this.$$instance) {
|
|
729
706
|
this.$$allowconstruct = true;
|
|
730
|
-
this.$$instance = null;
|
|
707
|
+
this.$$instance = null; // null means "object is being created"; needed for another call of getInstance() during instantiation
|
|
731
708
|
this.$$instance = new this();
|
|
732
709
|
delete this.$$allowconstruct;
|
|
733
710
|
}
|
|
@@ -735,25 +712,23 @@ qx.Bootstrap.define("qx.Class",
|
|
|
735
712
|
return this.$$instance;
|
|
736
713
|
},
|
|
737
714
|
|
|
738
|
-
|
|
739
715
|
/**
|
|
740
716
|
* Retreive all subclasses of a given class
|
|
741
717
|
*
|
|
742
718
|
* @param clazz {Class} the class which should be inspected
|
|
743
|
-
*
|
|
719
|
+
*
|
|
744
720
|
* @return {Object} class name hash holding the references to the subclasses or null if the class does not exist.
|
|
745
721
|
*/
|
|
746
|
-
getSubclasses
|
|
747
|
-
|
|
748
|
-
if(!clazz) {
|
|
722
|
+
getSubclasses(clazz) {
|
|
723
|
+
if (!clazz) {
|
|
749
724
|
return null;
|
|
750
725
|
}
|
|
751
|
-
|
|
726
|
+
|
|
752
727
|
var subclasses = {};
|
|
753
728
|
var registry = qx.Class.$$registry;
|
|
754
729
|
|
|
755
730
|
for (var name in registry) {
|
|
756
|
-
if(registry[name].superclass && registry[name].superclass == clazz) {
|
|
731
|
+
if (registry[name].superclass && registry[name].superclass == clazz) {
|
|
757
732
|
subclasses[name] = registry[name];
|
|
758
733
|
}
|
|
759
734
|
}
|
|
@@ -761,8 +736,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
761
736
|
return subclasses;
|
|
762
737
|
},
|
|
763
738
|
|
|
764
|
-
|
|
765
|
-
|
|
766
739
|
/*
|
|
767
740
|
---------------------------------------------------------------------------
|
|
768
741
|
PRIVATE/INTERNAL BASICS
|
|
@@ -776,57 +749,49 @@ qx.Bootstrap.define("qx.Class",
|
|
|
776
749
|
* @internal
|
|
777
750
|
* @return {String} The class identifier
|
|
778
751
|
*/
|
|
779
|
-
genericToString
|
|
752
|
+
genericToString() {
|
|
780
753
|
return "[Class " + this.classname + "]";
|
|
781
754
|
},
|
|
782
755
|
|
|
783
|
-
|
|
784
756
|
/** Stores all defined classes */
|
|
785
|
-
$$registry
|
|
786
|
-
|
|
757
|
+
$$registry: qx.Bootstrap.$$registry,
|
|
787
758
|
|
|
788
759
|
/** @type {Map} allowed keys in non-static class definition */
|
|
789
|
-
__allowedKeys
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
"@"
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
"defer" : "function", // Function
|
|
807
|
-
"destruct" : "function" // Function
|
|
760
|
+
__allowedKeys: qx.core.Environment.select("qx.debug", {
|
|
761
|
+
true: {
|
|
762
|
+
"@": "object",
|
|
763
|
+
"@construct": "object",
|
|
764
|
+
"@destruct": "object",
|
|
765
|
+
type: "string", // String
|
|
766
|
+
extend: "function", // Function
|
|
767
|
+
implement: "object", // Interface[]
|
|
768
|
+
include: "object", // Mixin[]
|
|
769
|
+
construct: "function", // Function
|
|
770
|
+
statics: "object", // Map
|
|
771
|
+
properties: "object", // Map
|
|
772
|
+
members: "object", // Map
|
|
773
|
+
environment: "object", // Map
|
|
774
|
+
events: "object", // Map
|
|
775
|
+
defer: "function", // Function
|
|
776
|
+
destruct: "function" // Function
|
|
808
777
|
},
|
|
809
778
|
|
|
810
|
-
|
|
779
|
+
default: null
|
|
811
780
|
}),
|
|
812
781
|
|
|
813
|
-
|
|
814
782
|
/** @type {Map} allowed keys in static class definition */
|
|
815
|
-
__staticAllowedKeys
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
"environment" : "object", // Map
|
|
823
|
-
"defer" : "function" // Function
|
|
783
|
+
__staticAllowedKeys: qx.core.Environment.select("qx.debug", {
|
|
784
|
+
true: {
|
|
785
|
+
"@": "object",
|
|
786
|
+
type: "string", // String
|
|
787
|
+
statics: "object", // Map
|
|
788
|
+
environment: "object", // Map
|
|
789
|
+
defer: "function" // Function
|
|
824
790
|
},
|
|
825
791
|
|
|
826
|
-
|
|
792
|
+
default: null
|
|
827
793
|
}),
|
|
828
794
|
|
|
829
|
-
|
|
830
795
|
/**
|
|
831
796
|
* Validates an incoming configuration and checks for proper keys and values
|
|
832
797
|
*
|
|
@@ -834,157 +799,241 @@ qx.Bootstrap.define("qx.Class",
|
|
|
834
799
|
* @param name {String} The name of the class
|
|
835
800
|
* @param config {Map} Configuration map
|
|
836
801
|
*/
|
|
837
|
-
__validateConfig
|
|
838
|
-
|
|
839
|
-
"true": function(name, config)
|
|
840
|
-
{
|
|
802
|
+
__validateConfig: qx.core.Environment.select("qx.debug", {
|
|
803
|
+
true(name, config) {
|
|
841
804
|
// Validate type
|
|
842
|
-
if (
|
|
843
|
-
|
|
805
|
+
if (
|
|
806
|
+
config.type &&
|
|
807
|
+
!(
|
|
808
|
+
config.type === "static" ||
|
|
809
|
+
config.type === "abstract" ||
|
|
810
|
+
config.type === "singleton"
|
|
811
|
+
)
|
|
812
|
+
) {
|
|
813
|
+
throw new Error(
|
|
814
|
+
'Invalid type "' +
|
|
815
|
+
config.type +
|
|
816
|
+
'" definition for class "' +
|
|
817
|
+
name +
|
|
818
|
+
'"!'
|
|
819
|
+
);
|
|
844
820
|
}
|
|
845
821
|
|
|
846
822
|
// Validate non-static class on the "extend" key
|
|
847
823
|
if (config.type && config.type !== "static" && !config.extend) {
|
|
848
|
-
throw new Error(
|
|
824
|
+
throw new Error(
|
|
825
|
+
'Invalid config in class "' +
|
|
826
|
+
name +
|
|
827
|
+
'"! Every non-static class has to extend at least the "qx.core.Object" class.'
|
|
828
|
+
);
|
|
849
829
|
}
|
|
850
830
|
|
|
851
831
|
// Validate keys
|
|
852
|
-
var allowed =
|
|
853
|
-
|
|
854
|
-
|
|
832
|
+
var allowed =
|
|
833
|
+
config.type === "static"
|
|
834
|
+
? this.__staticAllowedKeys
|
|
835
|
+
: this.__allowedKeys;
|
|
836
|
+
for (var key in config) {
|
|
855
837
|
if (!allowed[key]) {
|
|
856
|
-
throw new Error(
|
|
838
|
+
throw new Error(
|
|
839
|
+
'The configuration key "' +
|
|
840
|
+
key +
|
|
841
|
+
'" in class "' +
|
|
842
|
+
name +
|
|
843
|
+
'" is not allowed!'
|
|
844
|
+
);
|
|
857
845
|
}
|
|
858
846
|
|
|
859
847
|
if (config[key] == null) {
|
|
860
|
-
throw new Error(
|
|
848
|
+
throw new Error(
|
|
849
|
+
'Invalid key "' +
|
|
850
|
+
key +
|
|
851
|
+
'" in class "' +
|
|
852
|
+
name +
|
|
853
|
+
'"! The value is undefined/null!'
|
|
854
|
+
);
|
|
861
855
|
}
|
|
862
856
|
|
|
863
857
|
if (typeof config[key] !== allowed[key]) {
|
|
864
|
-
throw new Error(
|
|
858
|
+
throw new Error(
|
|
859
|
+
'Invalid type of key "' +
|
|
860
|
+
key +
|
|
861
|
+
'" in class "' +
|
|
862
|
+
name +
|
|
863
|
+
'"! The type of the key must be "' +
|
|
864
|
+
allowed[key] +
|
|
865
|
+
'"!'
|
|
866
|
+
);
|
|
865
867
|
}
|
|
866
868
|
}
|
|
867
869
|
|
|
868
870
|
// Validate maps
|
|
869
|
-
var maps = [
|
|
870
|
-
|
|
871
|
-
|
|
871
|
+
var maps = [
|
|
872
|
+
"statics",
|
|
873
|
+
"properties",
|
|
874
|
+
"members",
|
|
875
|
+
"environment",
|
|
876
|
+
"settings",
|
|
877
|
+
"variants",
|
|
878
|
+
"events"
|
|
879
|
+
];
|
|
880
|
+
|
|
881
|
+
for (var i = 0, l = maps.length; i < l; i++) {
|
|
872
882
|
var key = maps[i];
|
|
873
883
|
|
|
874
|
-
if (
|
|
875
|
-
config[key]
|
|
876
|
-
|
|
877
|
-
|
|
884
|
+
if (
|
|
885
|
+
config[key] !== undefined &&
|
|
886
|
+
(config[key].$$hash !== undefined ||
|
|
887
|
+
!qx.Bootstrap.isObject(config[key]))
|
|
888
|
+
) {
|
|
889
|
+
throw new Error(
|
|
890
|
+
'Invalid key "' +
|
|
891
|
+
key +
|
|
892
|
+
'" in class "' +
|
|
893
|
+
name +
|
|
894
|
+
'"! The value needs to be a map!'
|
|
895
|
+
);
|
|
878
896
|
}
|
|
879
897
|
}
|
|
880
898
|
|
|
881
899
|
// Validate include definition
|
|
882
|
-
if (config.include)
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
{
|
|
886
|
-
for (var i=0, a=config.include, l=a.length; i<l; i++)
|
|
887
|
-
{
|
|
900
|
+
if (config.include) {
|
|
901
|
+
if (qx.Bootstrap.getClass(config.include) === "Array") {
|
|
902
|
+
for (var i = 0, a = config.include, l = a.length; i < l; i++) {
|
|
888
903
|
if (a[i] == null || a[i].$$type !== "Mixin") {
|
|
889
|
-
throw new Error(
|
|
904
|
+
throw new Error(
|
|
905
|
+
'The include definition in class "' +
|
|
906
|
+
name +
|
|
907
|
+
'" contains an invalid mixin at position ' +
|
|
908
|
+
i +
|
|
909
|
+
": " +
|
|
910
|
+
a[i]
|
|
911
|
+
);
|
|
890
912
|
}
|
|
891
913
|
}
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
914
|
+
} else {
|
|
915
|
+
throw new Error(
|
|
916
|
+
'Invalid include definition in class "' +
|
|
917
|
+
name +
|
|
918
|
+
'"! Only mixins and arrays of mixins are allowed!'
|
|
919
|
+
);
|
|
896
920
|
}
|
|
897
921
|
}
|
|
898
922
|
|
|
899
923
|
// Validate implement definition
|
|
900
|
-
if (config.implement)
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
{
|
|
904
|
-
for (var i=0, a=config.implement, l=a.length; i<l; i++)
|
|
905
|
-
{
|
|
924
|
+
if (config.implement) {
|
|
925
|
+
if (qx.Bootstrap.getClass(config.implement) === "Array") {
|
|
926
|
+
for (var i = 0, a = config.implement, l = a.length; i < l; i++) {
|
|
906
927
|
if (a[i] == null || a[i].$$type !== "Interface") {
|
|
907
|
-
throw new Error(
|
|
928
|
+
throw new Error(
|
|
929
|
+
'The implement definition in class "' +
|
|
930
|
+
name +
|
|
931
|
+
'" contains an invalid interface at position ' +
|
|
932
|
+
i +
|
|
933
|
+
": " +
|
|
934
|
+
a[i]
|
|
935
|
+
);
|
|
908
936
|
}
|
|
909
937
|
}
|
|
910
|
-
}
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
938
|
+
} else {
|
|
939
|
+
throw new Error(
|
|
940
|
+
'Invalid implement definition in class "' +
|
|
941
|
+
name +
|
|
942
|
+
'"! Only interfaces and arrays of interfaces are allowed!'
|
|
943
|
+
);
|
|
914
944
|
}
|
|
915
945
|
}
|
|
916
946
|
|
|
917
947
|
// Check mixin compatibility
|
|
918
|
-
if (config.include)
|
|
919
|
-
{
|
|
948
|
+
if (config.include) {
|
|
920
949
|
try {
|
|
921
950
|
qx.Mixin.checkCompatibility(config.include);
|
|
922
|
-
} catch(ex) {
|
|
923
|
-
throw new Error(
|
|
951
|
+
} catch (ex) {
|
|
952
|
+
throw new Error(
|
|
953
|
+
'Error in include definition of class "' +
|
|
954
|
+
name +
|
|
955
|
+
'"! ' +
|
|
956
|
+
ex.message
|
|
957
|
+
);
|
|
924
958
|
}
|
|
925
959
|
}
|
|
926
960
|
|
|
927
961
|
// Validate environment
|
|
928
|
-
if (config.environment)
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
'environment setting
|
|
962
|
+
if (config.environment) {
|
|
963
|
+
for (var key in config.environment) {
|
|
964
|
+
if (
|
|
965
|
+
key.substr(0, key.indexOf(".")) !=
|
|
966
|
+
name.substr(0, name.indexOf("."))
|
|
967
|
+
) {
|
|
968
|
+
throw new Error(
|
|
969
|
+
'Forbidden environment setting "' +
|
|
970
|
+
key +
|
|
971
|
+
'" found in "' +
|
|
972
|
+
name +
|
|
973
|
+
'". It is forbidden to define a ' +
|
|
974
|
+
"environment setting for an external namespace!"
|
|
975
|
+
);
|
|
936
976
|
}
|
|
937
977
|
}
|
|
938
978
|
}
|
|
939
979
|
|
|
940
980
|
// Validate settings
|
|
941
|
-
if (config.settings)
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
981
|
+
if (config.settings) {
|
|
982
|
+
for (var key in config.settings) {
|
|
983
|
+
if (
|
|
984
|
+
key.substr(0, key.indexOf(".")) !=
|
|
985
|
+
name.substr(0, name.indexOf("."))
|
|
986
|
+
) {
|
|
987
|
+
throw new Error(
|
|
988
|
+
'Forbidden setting "' +
|
|
989
|
+
key +
|
|
990
|
+
'" found in "' +
|
|
991
|
+
name +
|
|
992
|
+
'". It is forbidden to define a default setting for an external namespace!'
|
|
993
|
+
);
|
|
947
994
|
}
|
|
948
995
|
}
|
|
949
996
|
}
|
|
950
997
|
|
|
951
998
|
// Validate variants
|
|
952
|
-
if (config.variants)
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
999
|
+
if (config.variants) {
|
|
1000
|
+
for (var key in config.variants) {
|
|
1001
|
+
if (
|
|
1002
|
+
key.substr(0, key.indexOf(".")) !=
|
|
1003
|
+
name.substr(0, name.indexOf("."))
|
|
1004
|
+
) {
|
|
1005
|
+
throw new Error(
|
|
1006
|
+
'Forbidden variant "' +
|
|
1007
|
+
key +
|
|
1008
|
+
'" found in "' +
|
|
1009
|
+
name +
|
|
1010
|
+
'". It is forbidden to define a variant for an external namespace!'
|
|
1011
|
+
);
|
|
958
1012
|
}
|
|
959
1013
|
}
|
|
960
1014
|
}
|
|
961
1015
|
},
|
|
962
1016
|
|
|
963
|
-
|
|
1017
|
+
default(name, config) {}
|
|
964
1018
|
}),
|
|
965
1019
|
|
|
966
|
-
|
|
967
1020
|
/**
|
|
968
1021
|
* Validates the interfaces required by abstract base classes
|
|
969
1022
|
*
|
|
970
1023
|
* @signature function(clazz)
|
|
971
1024
|
* @param clazz {Class} The configured class.
|
|
972
1025
|
*/
|
|
973
|
-
__validateAbstractInterfaces
|
|
974
|
-
|
|
975
|
-
"true": function(clazz)
|
|
976
|
-
{
|
|
1026
|
+
__validateAbstractInterfaces: qx.core.Environment.select("qx.debug", {
|
|
1027
|
+
true(clazz) {
|
|
977
1028
|
var superclass = clazz.superclass;
|
|
978
|
-
while (superclass)
|
|
979
|
-
{
|
|
1029
|
+
while (superclass) {
|
|
980
1030
|
if (superclass.$$classtype !== "abstract") {
|
|
981
1031
|
break;
|
|
982
1032
|
}
|
|
983
1033
|
|
|
984
1034
|
var interfaces = superclass.$$implements;
|
|
985
|
-
if (interfaces)
|
|
986
|
-
|
|
987
|
-
for (var i=0; i<interfaces.length; i++) {
|
|
1035
|
+
if (interfaces) {
|
|
1036
|
+
for (var i = 0; i < interfaces.length; i++) {
|
|
988
1037
|
qx.Interface.assert(clazz, interfaces[i], true);
|
|
989
1038
|
}
|
|
990
1039
|
}
|
|
@@ -992,10 +1041,9 @@ qx.Bootstrap.define("qx.Class",
|
|
|
992
1041
|
}
|
|
993
1042
|
},
|
|
994
1043
|
|
|
995
|
-
|
|
1044
|
+
default(clazz) {}
|
|
996
1045
|
}),
|
|
997
|
-
|
|
998
|
-
|
|
1046
|
+
|
|
999
1047
|
/**
|
|
1000
1048
|
* Attaches an annotation to a class
|
|
1001
1049
|
*
|
|
@@ -1004,20 +1052,19 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1004
1052
|
* @param key {String} Name of the annotated item
|
|
1005
1053
|
* @param anno {Object} Annotation object
|
|
1006
1054
|
*/
|
|
1007
|
-
__attachAnno
|
|
1055
|
+
__attachAnno(clazz, group, key, anno) {
|
|
1008
1056
|
if (anno !== undefined) {
|
|
1009
1057
|
if (clazz.$$annotations === undefined) {
|
|
1010
1058
|
clazz.$$annotations = {};
|
|
1011
1059
|
clazz.$$annotations[group] = {};
|
|
1012
|
-
|
|
1013
1060
|
} else if (clazz.$$annotations[group] === undefined) {
|
|
1014
1061
|
clazz.$$annotations[group] = {};
|
|
1015
1062
|
}
|
|
1016
|
-
|
|
1063
|
+
|
|
1017
1064
|
if (!qx.lang.Type.isArray(anno)) {
|
|
1018
1065
|
anno = [anno];
|
|
1019
1066
|
}
|
|
1020
|
-
|
|
1067
|
+
|
|
1021
1068
|
if (key) {
|
|
1022
1069
|
clazz.$$annotations[group][key] = anno;
|
|
1023
1070
|
} else {
|
|
@@ -1026,7 +1073,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1026
1073
|
}
|
|
1027
1074
|
},
|
|
1028
1075
|
|
|
1029
|
-
|
|
1030
1076
|
/**
|
|
1031
1077
|
* Creates a class by type. Supports modern inheritance etc.
|
|
1032
1078
|
*
|
|
@@ -1039,26 +1085,21 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1039
1085
|
* @param mixins {Mixin[]} array of mixins of the class
|
|
1040
1086
|
* @return {Class} The generated class
|
|
1041
1087
|
*/
|
|
1042
|
-
__createClass
|
|
1043
|
-
{
|
|
1088
|
+
__createClass(name, type, extend, statics, construct, destruct, mixins) {
|
|
1044
1089
|
var isStrictMode = function () {
|
|
1045
|
-
return
|
|
1090
|
+
return typeof this == "undefined";
|
|
1046
1091
|
};
|
|
1047
1092
|
|
|
1048
1093
|
var clazz;
|
|
1049
1094
|
|
|
1050
|
-
if (!extend && qx.core.Environment.get("qx.aspects") == false)
|
|
1051
|
-
{
|
|
1095
|
+
if (!extend && qx.core.Environment.get("qx.aspects") == false) {
|
|
1052
1096
|
// Create empty/non-empty class
|
|
1053
1097
|
clazz = statics || {};
|
|
1054
1098
|
qx.Bootstrap.setDisplayNames(clazz, name);
|
|
1055
|
-
}
|
|
1056
|
-
else
|
|
1057
|
-
{
|
|
1099
|
+
} else {
|
|
1058
1100
|
clazz = {};
|
|
1059
1101
|
|
|
1060
|
-
if (extend)
|
|
1061
|
-
{
|
|
1102
|
+
if (extend) {
|
|
1062
1103
|
// Create default constructor
|
|
1063
1104
|
if (!construct) {
|
|
1064
1105
|
construct = this.__createDefaultConstructor();
|
|
@@ -1073,47 +1114,56 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1073
1114
|
|
|
1074
1115
|
qx.Bootstrap.setDisplayName(construct, name, "constructor");
|
|
1075
1116
|
}
|
|
1076
|
-
|
|
1117
|
+
|
|
1077
1118
|
// Copy statics
|
|
1078
|
-
if (statics)
|
|
1079
|
-
{
|
|
1119
|
+
if (statics) {
|
|
1080
1120
|
qx.Bootstrap.setDisplayNames(statics, name);
|
|
1081
1121
|
|
|
1082
1122
|
var key;
|
|
1083
1123
|
|
|
1084
|
-
for (var i=0, a=Object.keys(statics), l=a.length; i<l; i++)
|
|
1085
|
-
{
|
|
1124
|
+
for (var i = 0, a = Object.keys(statics), l = a.length; i < l; i++) {
|
|
1086
1125
|
key = a[i];
|
|
1087
1126
|
var staticValue = statics[key];
|
|
1088
1127
|
|
|
1089
1128
|
if (qx.core.Environment.get("qx.debug")) {
|
|
1090
|
-
if (key.charAt(0) ===
|
|
1129
|
+
if (key.charAt(0) === "@") {
|
|
1091
1130
|
if (statics[key.substring(1)] === undefined) {
|
|
1092
|
-
throw new Error(
|
|
1131
|
+
throw new Error(
|
|
1132
|
+
'Annonation for static "' +
|
|
1133
|
+
key.substring(1) +
|
|
1134
|
+
'" of Class "' +
|
|
1135
|
+
clazz.classname +
|
|
1136
|
+
'" does not exist!'
|
|
1137
|
+
);
|
|
1093
1138
|
}
|
|
1094
1139
|
if (key.charAt(1) === "_" && key.charAt(2) === "_") {
|
|
1095
|
-
throw new Error(
|
|
1140
|
+
throw new Error(
|
|
1141
|
+
'Cannot annotate private static "' +
|
|
1142
|
+
key.substring(1) +
|
|
1143
|
+
'" of Class "' +
|
|
1144
|
+
clazz.classname
|
|
1145
|
+
);
|
|
1096
1146
|
}
|
|
1097
1147
|
}
|
|
1098
1148
|
}
|
|
1099
|
-
if (key.charAt(0) ===
|
|
1149
|
+
if (key.charAt(0) === "@") {
|
|
1100
1150
|
continue;
|
|
1101
1151
|
}
|
|
1102
1152
|
|
|
1103
|
-
if (qx.core.Environment.get("qx.aspects"))
|
|
1104
|
-
{
|
|
1105
|
-
|
|
1153
|
+
if (qx.core.Environment.get("qx.aspects")) {
|
|
1106
1154
|
if (staticValue instanceof Function) {
|
|
1107
|
-
staticValue = qx.core.Aspect.wrap(
|
|
1155
|
+
staticValue = qx.core.Aspect.wrap(
|
|
1156
|
+
name + "." + key,
|
|
1157
|
+
staticValue,
|
|
1158
|
+
"static"
|
|
1159
|
+
);
|
|
1108
1160
|
}
|
|
1109
1161
|
|
|
1110
1162
|
clazz[key] = staticValue;
|
|
1111
|
-
}
|
|
1112
|
-
else
|
|
1113
|
-
{
|
|
1163
|
+
} else {
|
|
1114
1164
|
clazz[key] = staticValue;
|
|
1115
1165
|
}
|
|
1116
|
-
|
|
1166
|
+
|
|
1117
1167
|
// Attach annotations
|
|
1118
1168
|
this.__attachAnno(clazz, "statics", key, statics["@" + key]);
|
|
1119
1169
|
}
|
|
@@ -1128,7 +1178,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1128
1178
|
if (!isStrictMode()) {
|
|
1129
1179
|
try {
|
|
1130
1180
|
clazz.name = name;
|
|
1131
|
-
} catch(ex) {
|
|
1181
|
+
} catch (ex) {
|
|
1132
1182
|
// Nothing
|
|
1133
1183
|
}
|
|
1134
1184
|
}
|
|
@@ -1145,13 +1195,11 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1145
1195
|
clazz.toString = this.genericToString;
|
|
1146
1196
|
}
|
|
1147
1197
|
|
|
1148
|
-
if (extend)
|
|
1149
|
-
{
|
|
1198
|
+
if (extend) {
|
|
1150
1199
|
qx.Bootstrap.extendClass(clazz, construct, extend, name, basename);
|
|
1151
1200
|
|
|
1152
1201
|
// Store destruct onto class
|
|
1153
|
-
if (destruct)
|
|
1154
|
-
{
|
|
1202
|
+
if (destruct) {
|
|
1155
1203
|
if (qx.core.Environment.get("qx.aspects")) {
|
|
1156
1204
|
destruct = qx.core.Aspect.wrap(name, destruct, "destructor");
|
|
1157
1205
|
}
|
|
@@ -1168,11 +1216,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1168
1216
|
return clazz;
|
|
1169
1217
|
},
|
|
1170
1218
|
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
1219
|
/*
|
|
1177
1220
|
---------------------------------------------------------------------------
|
|
1178
1221
|
PRIVATE ADD HELPERS
|
|
@@ -1186,46 +1229,58 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1186
1229
|
* @param events {Map} map of event names the class fires.
|
|
1187
1230
|
* @param patch {Boolean ? false} Enable redefinition of event type?
|
|
1188
1231
|
*/
|
|
1189
|
-
__addEvents
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1232
|
+
__addEvents(clazz, events, patch) {
|
|
1233
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
1234
|
+
if (
|
|
1235
|
+
typeof events !== "object" ||
|
|
1236
|
+
qx.Bootstrap.getClass(events) === "Array"
|
|
1237
|
+
) {
|
|
1238
|
+
throw new Error(
|
|
1239
|
+
clazz.classname + ": the events must be defined as map!"
|
|
1240
|
+
);
|
|
1195
1241
|
}
|
|
1196
1242
|
|
|
1197
|
-
for (var key in events)
|
|
1198
|
-
{
|
|
1243
|
+
for (var key in events) {
|
|
1199
1244
|
if (typeof events[key] !== "string") {
|
|
1200
|
-
throw new Error(
|
|
1245
|
+
throw new Error(
|
|
1246
|
+
clazz.classname +
|
|
1247
|
+
"/" +
|
|
1248
|
+
key +
|
|
1249
|
+
": the event value needs to be a string with the class name of the event object which will be fired."
|
|
1250
|
+
);
|
|
1201
1251
|
}
|
|
1202
1252
|
}
|
|
1203
1253
|
|
|
1204
1254
|
// Compare old and new event type/value if patching is disabled
|
|
1205
|
-
if (clazz.$$events && patch !== true)
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1255
|
+
if (clazz.$$events && patch !== true) {
|
|
1256
|
+
for (var key in events) {
|
|
1257
|
+
if (
|
|
1258
|
+
clazz.$$events[key] !== undefined &&
|
|
1259
|
+
clazz.$$events[key] !== events[key]
|
|
1260
|
+
) {
|
|
1261
|
+
throw new Error(
|
|
1262
|
+
clazz.classname +
|
|
1263
|
+
"/" +
|
|
1264
|
+
key +
|
|
1265
|
+
": the event value/type cannot be changed from " +
|
|
1266
|
+
clazz.$$events[key] +
|
|
1267
|
+
" to " +
|
|
1268
|
+
events[key]
|
|
1269
|
+
);
|
|
1211
1270
|
}
|
|
1212
1271
|
}
|
|
1213
1272
|
}
|
|
1214
1273
|
}
|
|
1215
1274
|
|
|
1216
|
-
if (clazz.$$events)
|
|
1217
|
-
{
|
|
1275
|
+
if (clazz.$$events) {
|
|
1218
1276
|
for (var key in events) {
|
|
1219
1277
|
clazz.$$events[key] = events[key];
|
|
1220
1278
|
}
|
|
1221
|
-
}
|
|
1222
|
-
else
|
|
1223
|
-
{
|
|
1279
|
+
} else {
|
|
1224
1280
|
clazz.$$events = events;
|
|
1225
1281
|
}
|
|
1226
1282
|
},
|
|
1227
1283
|
|
|
1228
|
-
|
|
1229
1284
|
/**
|
|
1230
1285
|
* Attach properties to classes
|
|
1231
1286
|
*
|
|
@@ -1234,13 +1289,12 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1234
1289
|
* @param patch {Boolean ? false} Overwrite property with the limitations of a property
|
|
1235
1290
|
which means you are able to refine but not to replace (esp. for new properties)
|
|
1236
1291
|
*/
|
|
1237
|
-
__addProperties
|
|
1238
|
-
{
|
|
1292
|
+
__addProperties(clazz, properties, patch) {
|
|
1239
1293
|
// check for the property module
|
|
1240
1294
|
if (!qx.core.Environment.get("module.property")) {
|
|
1241
1295
|
throw new Error("Property module disabled.");
|
|
1242
1296
|
}
|
|
1243
|
-
|
|
1297
|
+
|
|
1244
1298
|
if (qx.core.Environment.get("qx.debug")) {
|
|
1245
1299
|
if (qx.Bootstrap.isQxCoreObject(properties)) {
|
|
1246
1300
|
throw new Error("Invalid 'properties' for " + clazz.classname);
|
|
@@ -1255,8 +1309,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1255
1309
|
|
|
1256
1310
|
var proto = clazz.prototype;
|
|
1257
1311
|
|
|
1258
|
-
for (var name in properties)
|
|
1259
|
-
{
|
|
1312
|
+
for (var name in properties) {
|
|
1260
1313
|
config = properties[name];
|
|
1261
1314
|
|
|
1262
1315
|
// Check incoming configuration
|
|
@@ -1268,8 +1321,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1268
1321
|
config.name = name;
|
|
1269
1322
|
|
|
1270
1323
|
// Add config to local registry
|
|
1271
|
-
if (!config.refine)
|
|
1272
|
-
{
|
|
1324
|
+
if (!config.refine) {
|
|
1273
1325
|
if (clazz.$$properties === undefined) {
|
|
1274
1326
|
clazz.$$properties = {};
|
|
1275
1327
|
}
|
|
@@ -1292,14 +1344,13 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1292
1344
|
var event = {};
|
|
1293
1345
|
event[config.event] = "qx.event.type.Data";
|
|
1294
1346
|
if (config.async) {
|
|
1295
|
-
|
|
1347
|
+
event[config.event + "Async"] = "qx.event.type.Data";
|
|
1296
1348
|
}
|
|
1297
1349
|
this.__addEvents(clazz, event, patch);
|
|
1298
1350
|
}
|
|
1299
1351
|
|
|
1300
1352
|
// Remember inheritable properties
|
|
1301
|
-
if (config.inheritable)
|
|
1302
|
-
{
|
|
1353
|
+
if (config.inheritable) {
|
|
1303
1354
|
this.__Property.$$inheritable[name] = true;
|
|
1304
1355
|
if (!proto.$$refreshInheritables) {
|
|
1305
1356
|
this.__Property.attachRefreshInheritables(clazz);
|
|
@@ -1309,7 +1360,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1309
1360
|
if (!config.refine) {
|
|
1310
1361
|
this.__Property.attachMethods(clazz, name, config);
|
|
1311
1362
|
}
|
|
1312
|
-
|
|
1363
|
+
|
|
1313
1364
|
// Add annotations
|
|
1314
1365
|
this.__attachAnno(clazz, "properties", name, config["@"]);
|
|
1315
1366
|
}
|
|
@@ -1324,10 +1375,8 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1324
1375
|
* @param config {Map} configuration map
|
|
1325
1376
|
* @param patch {Boolean ? false} enable refine/patch?
|
|
1326
1377
|
*/
|
|
1327
|
-
__validateProperty
|
|
1328
|
-
|
|
1329
|
-
"true": function(clazz, name, config, patch)
|
|
1330
|
-
{
|
|
1378
|
+
__validateProperty: qx.core.Environment.select("qx.debug", {
|
|
1379
|
+
true(clazz, name, config, patch) {
|
|
1331
1380
|
// check for properties
|
|
1332
1381
|
if (!qx.core.Environment.get("module.property")) {
|
|
1333
1382
|
throw new Error("Property module disabled.");
|
|
@@ -1335,77 +1384,149 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1335
1384
|
|
|
1336
1385
|
var has = this.hasProperty(clazz, name);
|
|
1337
1386
|
|
|
1338
|
-
if (has)
|
|
1339
|
-
{
|
|
1387
|
+
if (has) {
|
|
1340
1388
|
var existingProperty = this.getPropertyDefinition(clazz, name);
|
|
1341
1389
|
|
|
1342
|
-
if (
|
|
1343
|
-
|
|
1390
|
+
if (
|
|
1391
|
+
config.refine &&
|
|
1392
|
+
existingProperty.init === undefined &&
|
|
1393
|
+
existingProperty["@"] === undefined
|
|
1394
|
+
) {
|
|
1395
|
+
this.warn(
|
|
1396
|
+
"Refine a property when there is previously no init or annotations defined. Property '" +
|
|
1397
|
+
name +
|
|
1398
|
+
"' of class '" +
|
|
1399
|
+
clazz.classname +
|
|
1400
|
+
"'."
|
|
1401
|
+
);
|
|
1344
1402
|
}
|
|
1345
1403
|
}
|
|
1346
1404
|
|
|
1347
1405
|
if (!has && config.refine) {
|
|
1348
|
-
throw new Error(
|
|
1406
|
+
throw new Error(
|
|
1407
|
+
"Could not refine non-existent property: '" +
|
|
1408
|
+
name +
|
|
1409
|
+
"' of class: '" +
|
|
1410
|
+
clazz.classname +
|
|
1411
|
+
"'!"
|
|
1412
|
+
);
|
|
1349
1413
|
}
|
|
1350
1414
|
|
|
1351
1415
|
if (has && !patch) {
|
|
1352
|
-
throw new Error(
|
|
1416
|
+
throw new Error(
|
|
1417
|
+
"Class " +
|
|
1418
|
+
clazz.classname +
|
|
1419
|
+
" already has a property: " +
|
|
1420
|
+
name +
|
|
1421
|
+
"!"
|
|
1422
|
+
);
|
|
1353
1423
|
}
|
|
1354
1424
|
|
|
1355
|
-
if (has && patch)
|
|
1356
|
-
{
|
|
1425
|
+
if (has && patch) {
|
|
1357
1426
|
if (!config.refine) {
|
|
1358
|
-
throw new Error(
|
|
1427
|
+
throw new Error(
|
|
1428
|
+
'Could not refine property "' +
|
|
1429
|
+
name +
|
|
1430
|
+
'" without a "refine" flag in the property definition! This class: ' +
|
|
1431
|
+
clazz.classname +
|
|
1432
|
+
", original class: " +
|
|
1433
|
+
this.getByProperty(clazz, name).classname +
|
|
1434
|
+
"."
|
|
1435
|
+
);
|
|
1359
1436
|
}
|
|
1360
1437
|
|
|
1361
|
-
for (var key in config)
|
|
1362
|
-
{
|
|
1438
|
+
for (var key in config) {
|
|
1363
1439
|
if (key !== "init" && key !== "refine" && key !== "@") {
|
|
1364
|
-
throw new Error(
|
|
1440
|
+
throw new Error(
|
|
1441
|
+
"Class " +
|
|
1442
|
+
clazz.classname +
|
|
1443
|
+
" could not refine property: " +
|
|
1444
|
+
name +
|
|
1445
|
+
"! Key: " +
|
|
1446
|
+
key +
|
|
1447
|
+
" could not be refined!"
|
|
1448
|
+
);
|
|
1365
1449
|
}
|
|
1366
1450
|
}
|
|
1367
1451
|
}
|
|
1368
1452
|
|
|
1369
1453
|
// Check 0.7 keys
|
|
1370
|
-
var allowed = config.group
|
|
1371
|
-
|
|
1372
|
-
|
|
1454
|
+
var allowed = config.group
|
|
1455
|
+
? this.__Property.$$allowedGroupKeys
|
|
1456
|
+
: this.__Property.$$allowedKeys;
|
|
1457
|
+
for (var key in config) {
|
|
1373
1458
|
if (allowed[key] === undefined) {
|
|
1374
|
-
throw new Error(
|
|
1459
|
+
throw new Error(
|
|
1460
|
+
'The configuration key "' +
|
|
1461
|
+
key +
|
|
1462
|
+
'" of property "' +
|
|
1463
|
+
name +
|
|
1464
|
+
'" in class "' +
|
|
1465
|
+
clazz.classname +
|
|
1466
|
+
'" is not allowed!'
|
|
1467
|
+
);
|
|
1375
1468
|
}
|
|
1376
1469
|
|
|
1377
1470
|
if (config[key] === undefined) {
|
|
1378
|
-
throw new Error(
|
|
1471
|
+
throw new Error(
|
|
1472
|
+
'Invalid key "' +
|
|
1473
|
+
key +
|
|
1474
|
+
'" of property "' +
|
|
1475
|
+
name +
|
|
1476
|
+
'" in class "' +
|
|
1477
|
+
clazz.classname +
|
|
1478
|
+
'"! The value is undefined: ' +
|
|
1479
|
+
config[key]
|
|
1480
|
+
);
|
|
1379
1481
|
}
|
|
1380
1482
|
|
|
1381
1483
|
if (allowed[key] !== null && typeof config[key] !== allowed[key]) {
|
|
1382
|
-
throw new Error(
|
|
1484
|
+
throw new Error(
|
|
1485
|
+
'Invalid type of key "' +
|
|
1486
|
+
key +
|
|
1487
|
+
'" of property "' +
|
|
1488
|
+
name +
|
|
1489
|
+
'" in class "' +
|
|
1490
|
+
clazz.classname +
|
|
1491
|
+
'"! The type of the key must be "' +
|
|
1492
|
+
allowed[key] +
|
|
1493
|
+
'"!'
|
|
1494
|
+
);
|
|
1383
1495
|
}
|
|
1384
1496
|
}
|
|
1385
1497
|
|
|
1386
|
-
if (config.transform != null)
|
|
1387
|
-
{
|
|
1498
|
+
if (config.transform != null) {
|
|
1388
1499
|
if (!(typeof config.transform === "string")) {
|
|
1389
|
-
throw new Error(
|
|
1500
|
+
throw new Error(
|
|
1501
|
+
'Invalid transform definition of property "' +
|
|
1502
|
+
name +
|
|
1503
|
+
'" in class "' +
|
|
1504
|
+
clazz.classname +
|
|
1505
|
+
'"! Needs to be a String.'
|
|
1506
|
+
);
|
|
1390
1507
|
}
|
|
1391
1508
|
}
|
|
1392
1509
|
|
|
1393
|
-
if (config.check != null)
|
|
1394
|
-
{
|
|
1510
|
+
if (config.check != null) {
|
|
1395
1511
|
if (
|
|
1396
1512
|
!qx.Bootstrap.isString(config.check) &&
|
|
1397
1513
|
!qx.Bootstrap.isArray(config.check) &&
|
|
1398
1514
|
!qx.Bootstrap.isFunction(config.check)
|
|
1399
1515
|
) {
|
|
1400
|
-
throw new Error(
|
|
1516
|
+
throw new Error(
|
|
1517
|
+
'Invalid check definition of property "' +
|
|
1518
|
+
name +
|
|
1519
|
+
'" in class "' +
|
|
1520
|
+
clazz.classname +
|
|
1521
|
+
'"! Needs to be a String, Array or Function.'
|
|
1522
|
+
);
|
|
1401
1523
|
}
|
|
1402
1524
|
}
|
|
1403
1525
|
},
|
|
1404
1526
|
|
|
1405
|
-
|
|
1527
|
+
default: null
|
|
1406
1528
|
}),
|
|
1407
1529
|
|
|
1408
|
-
|
|
1409
1530
|
/**
|
|
1410
1531
|
* Attach members to a class
|
|
1411
1532
|
*
|
|
@@ -1417,40 +1538,67 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1417
1538
|
* @param wrap {Boolean ? false} Whether the member method should be wrapped.
|
|
1418
1539
|
* this is needed to allow base calls in patched mixin members.
|
|
1419
1540
|
*/
|
|
1420
|
-
__addMembers
|
|
1421
|
-
{
|
|
1541
|
+
__addMembers(clazz, members, patch, base, wrap) {
|
|
1422
1542
|
var proto = clazz.prototype;
|
|
1423
1543
|
var key, member;
|
|
1424
1544
|
qx.Bootstrap.setDisplayNames(members, clazz.classname + ".prototype");
|
|
1425
1545
|
|
|
1426
|
-
for (var i=0, a=Object.keys(members), l=a.length; i<l; i++)
|
|
1427
|
-
{
|
|
1546
|
+
for (var i = 0, a = Object.keys(members), l = a.length; i < l; i++) {
|
|
1428
1547
|
key = a[i];
|
|
1429
1548
|
member = members[key];
|
|
1430
1549
|
|
|
1431
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
1432
|
-
|
|
1433
|
-
if (key.charAt(0) === '@') {
|
|
1550
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
1551
|
+
if (key.charAt(0) === "@") {
|
|
1434
1552
|
var annoKey = key.substring(1);
|
|
1435
|
-
if (
|
|
1436
|
-
|
|
1553
|
+
if (
|
|
1554
|
+
members[annoKey] === undefined &&
|
|
1555
|
+
proto[annoKey] === undefined
|
|
1556
|
+
) {
|
|
1557
|
+
throw new Error(
|
|
1558
|
+
'Annonation for "' +
|
|
1559
|
+
annoKey +
|
|
1560
|
+
'" of Class "' +
|
|
1561
|
+
clazz.classname +
|
|
1562
|
+
'" does not exist!'
|
|
1563
|
+
);
|
|
1437
1564
|
}
|
|
1438
1565
|
if (key.charAt(1) === "_" && key.charAt(2) === "_") {
|
|
1439
|
-
throw new Error(
|
|
1566
|
+
throw new Error(
|
|
1567
|
+
'Cannot annotate private member "' +
|
|
1568
|
+
key.substring(1) +
|
|
1569
|
+
'" of Class "' +
|
|
1570
|
+
clazz.classname
|
|
1571
|
+
);
|
|
1440
1572
|
}
|
|
1441
1573
|
} else {
|
|
1442
|
-
if (
|
|
1443
|
-
|
|
1574
|
+
if (
|
|
1575
|
+
proto[key] !== undefined &&
|
|
1576
|
+
key.charAt(0) === "_" &&
|
|
1577
|
+
key.charAt(1) === "_"
|
|
1578
|
+
) {
|
|
1579
|
+
throw new Error(
|
|
1580
|
+
'Overwriting private member "' +
|
|
1581
|
+
key +
|
|
1582
|
+
'" of Class "' +
|
|
1583
|
+
clazz.classname +
|
|
1584
|
+
'" is not allowed!'
|
|
1585
|
+
);
|
|
1444
1586
|
}
|
|
1445
|
-
|
|
1587
|
+
|
|
1446
1588
|
if (patch !== true && proto.hasOwnProperty(key)) {
|
|
1447
|
-
throw new Error(
|
|
1589
|
+
throw new Error(
|
|
1590
|
+
'Overwriting member "' +
|
|
1591
|
+
key +
|
|
1592
|
+
'" of Class "' +
|
|
1593
|
+
clazz.classname +
|
|
1594
|
+
'" is not allowed!'
|
|
1595
|
+
);
|
|
1448
1596
|
}
|
|
1449
1597
|
}
|
|
1450
1598
|
}
|
|
1451
|
-
|
|
1599
|
+
|
|
1452
1600
|
// Annotations are not members
|
|
1453
|
-
if (key.charAt(0) ===
|
|
1601
|
+
if (key.charAt(0) === "@") {
|
|
1454
1602
|
var annoKey = key.substring(1);
|
|
1455
1603
|
if (members[annoKey] === undefined) {
|
|
1456
1604
|
this.__attachAnno(clazz, "members", annoKey, members[key]);
|
|
@@ -1460,96 +1608,55 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1460
1608
|
|
|
1461
1609
|
// If it's a property accessor, we need to install it now so that this.base can refer to it
|
|
1462
1610
|
if (proto[key] != undefined && proto[key].$$install) {
|
|
1463
|
-
|
|
1611
|
+
proto[key].$$install();
|
|
1464
1612
|
}
|
|
1465
1613
|
|
|
1466
1614
|
// Added helper stuff to functions
|
|
1467
1615
|
// Hint: Could not use typeof function because RegExp objects are functions, too
|
|
1468
1616
|
// Protect to apply base property and aspect support on special attributes e.g.
|
|
1469
1617
|
// classes which are function like as well.
|
|
1470
|
-
if (
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
}
|
|
1481
|
-
member.self = clazz;
|
|
1482
|
-
}
|
|
1483
|
-
} else {
|
|
1484
|
-
// If the class has it's own implementation, we need to remember that method in the
|
|
1485
|
-
// mixed-in method's `.base`; wrap the method with a closure so that it can have a
|
|
1486
|
-
// `.base` set, if we were to set `member.base` it would mean that the mixin can
|
|
1487
|
-
// only be added into one class
|
|
1618
|
+
if (
|
|
1619
|
+
base !== false &&
|
|
1620
|
+
member instanceof Function &&
|
|
1621
|
+
member.$$type == null
|
|
1622
|
+
) {
|
|
1623
|
+
// If the class has it's own implementation, we need to remember that method in the
|
|
1624
|
+
// mixed-in method's `.base`; wrap the method with a closure so that it can have a
|
|
1625
|
+
// `.base` set, if we were to set `member.base` it would mean that the mixin can
|
|
1626
|
+
// only be added into one class
|
|
1627
|
+
if (wrap) {
|
|
1488
1628
|
if (proto[key]) {
|
|
1489
|
-
member = qx.lang.Function.create(member, {always: true});
|
|
1490
|
-
member.base = proto[key];
|
|
1491
|
-
}
|
|
1492
|
-
if (wrap) {
|
|
1493
|
-
member.self = clazz;
|
|
1629
|
+
member = qx.lang.Function.create(member, { always: true });
|
|
1494
1630
|
}
|
|
1631
|
+
member.self = clazz;
|
|
1495
1632
|
}
|
|
1633
|
+
member.base = proto[key];
|
|
1496
1634
|
|
|
1497
1635
|
if (qx.core.Environment.get("qx.aspects")) {
|
|
1498
|
-
member = qx.core.Aspect.wrap(
|
|
1636
|
+
member = qx.core.Aspect.wrap(
|
|
1637
|
+
clazz.classname + "." + key,
|
|
1638
|
+
member,
|
|
1639
|
+
"member"
|
|
1640
|
+
);
|
|
1499
1641
|
}
|
|
1500
1642
|
}
|
|
1501
1643
|
|
|
1502
1644
|
// Attach member
|
|
1503
1645
|
proto[key] = member;
|
|
1504
|
-
|
|
1646
|
+
|
|
1505
1647
|
// Attach annotations
|
|
1506
1648
|
this.__attachAnno(clazz, "members", key, members["@" + key]);
|
|
1507
1649
|
}
|
|
1508
1650
|
},
|
|
1509
1651
|
|
|
1510
|
-
|
|
1511
|
-
/**
|
|
1512
|
-
* Wraps a member function of a mixin, which is included using "patch". This
|
|
1513
|
-
* allows "base" calls in the mixin member function.
|
|
1514
|
-
*
|
|
1515
|
-
* @param member {Function} The mixin method to wrap
|
|
1516
|
-
* @param base {Function} The overwritten method
|
|
1517
|
-
* @return {Function} the wrapped mixin member
|
|
1518
|
-
*/
|
|
1519
|
-
__mixinMemberWrapper : function(member, base) {
|
|
1520
|
-
if (qx.core.Environment.get("qx.compiler")) {
|
|
1521
|
-
throw new Error("This function should not be used except with code compiled by the generator (ie python toolchain)");
|
|
1522
|
-
|
|
1523
|
-
} else {
|
|
1524
|
-
if (base)
|
|
1525
|
-
{
|
|
1526
|
-
return function()
|
|
1527
|
-
{
|
|
1528
|
-
var oldBase = member.base;
|
|
1529
|
-
member.base = base;
|
|
1530
|
-
var retval = member.apply(this, arguments);
|
|
1531
|
-
member.base = oldBase;
|
|
1532
|
-
return retval;
|
|
1533
|
-
};
|
|
1534
|
-
}
|
|
1535
|
-
else
|
|
1536
|
-
{
|
|
1537
|
-
return member;
|
|
1538
|
-
}
|
|
1539
|
-
}
|
|
1540
|
-
},
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
1652
|
/**
|
|
1544
1653
|
* Add a single interface to a class
|
|
1545
1654
|
*
|
|
1546
1655
|
* @param clazz {Class} class to add interface to
|
|
1547
1656
|
* @param iface {Interface} the Interface to add
|
|
1548
1657
|
*/
|
|
1549
|
-
__addInterface
|
|
1550
|
-
|
|
1551
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
1552
|
-
{
|
|
1658
|
+
__addInterface(clazz, iface) {
|
|
1659
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
1553
1660
|
if (!clazz || !iface) {
|
|
1554
1661
|
throw new Error("Incomplete parameters!");
|
|
1555
1662
|
}
|
|
@@ -1558,7 +1665,13 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1558
1665
|
// directly used by this class. It is allowed however, to have an interface
|
|
1559
1666
|
// included multiple times by extends in the interfaces etc.
|
|
1560
1667
|
if (this.hasOwnInterface(clazz, iface)) {
|
|
1561
|
-
throw new Error(
|
|
1668
|
+
throw new Error(
|
|
1669
|
+
'Interface "' +
|
|
1670
|
+
iface.name +
|
|
1671
|
+
'" is already used by Class "' +
|
|
1672
|
+
clazz.classname +
|
|
1673
|
+
"!"
|
|
1674
|
+
);
|
|
1562
1675
|
}
|
|
1563
1676
|
|
|
1564
1677
|
// Check interface and wrap members
|
|
@@ -1569,19 +1682,15 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1569
1682
|
|
|
1570
1683
|
// Store interface reference
|
|
1571
1684
|
var list = qx.Interface.flatten([iface]);
|
|
1572
|
-
if (clazz.$$implements)
|
|
1573
|
-
{
|
|
1685
|
+
if (clazz.$$implements) {
|
|
1574
1686
|
clazz.$$implements.push(iface);
|
|
1575
1687
|
clazz.$$flatImplements.push.apply(clazz.$$flatImplements, list);
|
|
1576
|
-
}
|
|
1577
|
-
else
|
|
1578
|
-
{
|
|
1688
|
+
} else {
|
|
1579
1689
|
clazz.$$implements = [iface];
|
|
1580
1690
|
clazz.$$flatImplements = list;
|
|
1581
1691
|
}
|
|
1582
1692
|
},
|
|
1583
1693
|
|
|
1584
|
-
|
|
1585
1694
|
/**
|
|
1586
1695
|
* Include all features of the mixin into the given class, recursively.
|
|
1587
1696
|
*
|
|
@@ -1589,10 +1698,8 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1589
1698
|
* @param mixin {Mixin} Include all features of this mixin
|
|
1590
1699
|
* @param patch {Boolean} Overwrite existing fields, functions and properties
|
|
1591
1700
|
*/
|
|
1592
|
-
__addMixin
|
|
1593
|
-
|
|
1594
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
1595
|
-
{
|
|
1701
|
+
__addMixin(clazz, mixin, patch) {
|
|
1702
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
1596
1703
|
if (!clazz || !mixin) {
|
|
1597
1704
|
throw new Error("Incomplete parameters!");
|
|
1598
1705
|
}
|
|
@@ -1606,8 +1713,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1606
1713
|
var list = qx.Mixin.flatten([mixin]);
|
|
1607
1714
|
var entry;
|
|
1608
1715
|
|
|
1609
|
-
for (var i=0, l=list.length; i<l; i++)
|
|
1610
|
-
{
|
|
1716
|
+
for (var i = 0, l = list.length; i < l; i++) {
|
|
1611
1717
|
entry = list[i];
|
|
1612
1718
|
|
|
1613
1719
|
// Attach events
|
|
@@ -1627,22 +1733,15 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1627
1733
|
}
|
|
1628
1734
|
|
|
1629
1735
|
// Store mixin reference
|
|
1630
|
-
if (clazz.$$includes)
|
|
1631
|
-
{
|
|
1736
|
+
if (clazz.$$includes) {
|
|
1632
1737
|
clazz.$$includes.push(mixin);
|
|
1633
1738
|
clazz.$$flatIncludes.push.apply(clazz.$$flatIncludes, list);
|
|
1634
|
-
}
|
|
1635
|
-
else
|
|
1636
|
-
{
|
|
1739
|
+
} else {
|
|
1637
1740
|
clazz.$$includes = [mixin];
|
|
1638
1741
|
clazz.$$flatIncludes = list;
|
|
1639
1742
|
}
|
|
1640
1743
|
},
|
|
1641
1744
|
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
1745
|
/*
|
|
1647
1746
|
---------------------------------------------------------------------------
|
|
1648
1747
|
PRIVATE FUNCTION HELPERS
|
|
@@ -1655,8 +1754,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1655
1754
|
*
|
|
1656
1755
|
* @return {Function} The default constructor.
|
|
1657
1756
|
*/
|
|
1658
|
-
__createDefaultConstructor
|
|
1659
|
-
{
|
|
1757
|
+
__createDefaultConstructor() {
|
|
1660
1758
|
function defaultConstructor() {
|
|
1661
1759
|
defaultConstructor.base.apply(this, arguments);
|
|
1662
1760
|
}
|
|
@@ -1664,7 +1762,6 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1664
1762
|
return defaultConstructor;
|
|
1665
1763
|
},
|
|
1666
1764
|
|
|
1667
|
-
|
|
1668
1765
|
/**
|
|
1669
1766
|
* Generate a wrapper of the original class constructor in order to enable
|
|
1670
1767
|
* some of the advanced OO features (e.g. abstract class, singleton, mixins)
|
|
@@ -1674,45 +1771,47 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1674
1771
|
* @param type {String} the user specified class type
|
|
1675
1772
|
* @return {Function} The wrapped constructor
|
|
1676
1773
|
*/
|
|
1677
|
-
__wrapConstructor
|
|
1678
|
-
|
|
1679
|
-
var wrapper = function()
|
|
1680
|
-
{
|
|
1774
|
+
__wrapConstructor(construct, name, type) {
|
|
1775
|
+
var wrapper = function () {
|
|
1681
1776
|
var clazz = wrapper;
|
|
1682
1777
|
|
|
1683
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
1684
|
-
{
|
|
1778
|
+
if (qx.core.Environment.get("qx.debug")) {
|
|
1685
1779
|
// new keyword check
|
|
1686
1780
|
if (!(this instanceof clazz)) {
|
|
1687
|
-
throw new Error(
|
|
1781
|
+
throw new Error(
|
|
1782
|
+
"Please initialize '" + name + "' objects using the new keyword!"
|
|
1783
|
+
);
|
|
1688
1784
|
}
|
|
1689
1785
|
|
|
1690
1786
|
// add abstract and singleton checks
|
|
1691
|
-
if (type === "abstract")
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1787
|
+
if (type === "abstract") {
|
|
1788
|
+
if (this.classname === name) {
|
|
1789
|
+
throw new Error(
|
|
1790
|
+
"The class '," +
|
|
1791
|
+
name +
|
|
1792
|
+
"' is abstract! It is not possible to instantiate it."
|
|
1793
|
+
);
|
|
1695
1794
|
}
|
|
1696
|
-
}
|
|
1697
|
-
else if (type === "singleton")
|
|
1698
|
-
{
|
|
1795
|
+
} else if (type === "singleton") {
|
|
1699
1796
|
if (!clazz.$$allowconstruct) {
|
|
1700
|
-
throw new Error(
|
|
1797
|
+
throw new Error(
|
|
1798
|
+
"The class '" +
|
|
1799
|
+
name +
|
|
1800
|
+
"' is a singleton! It is not possible to instantiate it directly. Use the static getInstance() method instead."
|
|
1801
|
+
);
|
|
1701
1802
|
}
|
|
1702
1803
|
}
|
|
1703
1804
|
}
|
|
1704
1805
|
|
|
1705
1806
|
// Execute default constructor
|
|
1706
|
-
var retval=clazz.$$original.apply(this,arguments);
|
|
1807
|
+
var retval = clazz.$$original.apply(this, arguments);
|
|
1707
1808
|
|
|
1708
1809
|
// Initialize local mixins
|
|
1709
|
-
if (clazz.$$includes)
|
|
1710
|
-
|
|
1711
|
-
var mixins
|
|
1712
|
-
for (var i=0, l=mixins.length; i<l; i++)
|
|
1713
|
-
{
|
|
1810
|
+
if (clazz.$$includes) {
|
|
1811
|
+
var mixins = clazz.$$flatIncludes;
|
|
1812
|
+
for (var i = 0, l = mixins.length; i < l; i++) {
|
|
1714
1813
|
if (mixins[i].$$constructor) {
|
|
1715
|
-
mixins[i].$$constructor.apply(this,arguments);
|
|
1814
|
+
mixins[i].$$constructor.apply(this, arguments);
|
|
1716
1815
|
}
|
|
1717
1816
|
}
|
|
1718
1817
|
}
|
|
@@ -1728,8 +1827,7 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1728
1827
|
return retval;
|
|
1729
1828
|
};
|
|
1730
1829
|
|
|
1731
|
-
if (qx.core.Environment.get("qx.aspects"))
|
|
1732
|
-
{
|
|
1830
|
+
if (qx.core.Environment.get("qx.aspects")) {
|
|
1733
1831
|
var aspectWrapper = qx.core.Aspect.wrap(name, wrapper, "constructor");
|
|
1734
1832
|
wrapper.$$original = construct;
|
|
1735
1833
|
wrapper.constructor = aspectWrapper;
|
|
@@ -1747,20 +1845,20 @@ qx.Bootstrap.define("qx.Class",
|
|
|
1747
1845
|
}
|
|
1748
1846
|
},
|
|
1749
1847
|
|
|
1750
|
-
defer
|
|
1751
|
-
{
|
|
1848
|
+
defer() {
|
|
1752
1849
|
// Binding of already loaded bootstrap classes
|
|
1753
|
-
if (qx.core.Environment.get("qx.aspects"))
|
|
1754
|
-
|
|
1755
|
-
for (var classname in qx.Bootstrap.$$registry)
|
|
1756
|
-
{
|
|
1850
|
+
if (qx.core.Environment.get("qx.aspects")) {
|
|
1851
|
+
for (var classname in qx.Bootstrap.$$registry) {
|
|
1757
1852
|
var statics = qx.Bootstrap.$$registry[classname];
|
|
1758
1853
|
|
|
1759
|
-
for (var key in statics)
|
|
1760
|
-
{
|
|
1854
|
+
for (var key in statics) {
|
|
1761
1855
|
// only functions, no regexps
|
|
1762
1856
|
if (statics[key] instanceof Function) {
|
|
1763
|
-
statics[key] = qx.core.Aspect.wrap(
|
|
1857
|
+
statics[key] = qx.core.Aspect.wrap(
|
|
1858
|
+
classname + "." + key,
|
|
1859
|
+
statics[key],
|
|
1860
|
+
"static"
|
|
1861
|
+
);
|
|
1764
1862
|
}
|
|
1765
1863
|
}
|
|
1766
1864
|
}
|