@qooxdoo/framework 7.9.2 → 8.0.0-beta.1

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.
Files changed (593) hide show
  1. package/CHANGELOG.md +191 -33
  2. package/Manifest.json +3 -3
  3. package/bin/tools/utils.js +50 -13
  4. package/lib/compiler/compile-info.json +300 -230
  5. package/lib/compiler/index.js +56748 -44036
  6. package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
  7. package/lib/resource/qx/tool/compiler/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -0
  8. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
  9. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
  10. package/lib/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
  11. package/lib/resource/qx/tool/{schema → compiler/schema}/compile-1-0-0.json +15 -3
  12. package/{source/resource/qx/tool → lib/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
  13. package/lib/resource/qx/tool/website/build/404.html +22 -22
  14. package/lib/resource/qx/tool/website/build/about.html +23 -23
  15. package/lib/resource/qx/tool/website/build/assets/common.js +30 -18
  16. package/lib/resource/qx/tool/website/build/assets/custom.css +290 -0
  17. package/lib/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
  18. package/lib/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
  19. package/lib/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
  20. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
  21. package/lib/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
  22. package/lib/resource/qx/tool/website/build/index.html +24 -24
  23. package/lib/resource/qx/tool/website/build/scripts/serve.js +63 -65
  24. package/lib/resource/qx/tool/website/partials/footer.html +8 -13
  25. package/lib/resource/qx/tool/website/partials/head.html +9 -7
  26. package/lib/resource/qx/tool/website/partials/header.html +3 -3
  27. package/lib/resource/qx/tool/website/src/assets/common.js +32 -0
  28. package/lib/resource/qx/tool/website/src/assets/custom.css +290 -0
  29. package/lib/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
  30. package/lib/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
  31. package/lib/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
  32. package/lib/resource/qx/tool/website/src/index.html +2 -2
  33. package/lib/resource/qx/tool/website/src/scripts/serve.js +63 -65
  34. package/package.json +20 -19
  35. package/source/boot/index.html +2 -2
  36. package/source/class/qx/Bootstrap.js +931 -705
  37. package/source/class/qx/Class.js +1476 -1451
  38. package/source/class/qx/Interface.js +40 -107
  39. package/source/class/qx/Mixin.js +58 -116
  40. package/source/class/qx/Promise.js +1 -0
  41. package/source/class/qx/Theme.js +1 -1
  42. package/source/class/qx/application/Routing.js +2 -0
  43. package/source/class/qx/bom/Font.js +3 -0
  44. package/source/class/qx/bom/client/Locale.js +5 -0
  45. package/source/class/qx/bom/request/Jsonp.js +5 -13
  46. package/source/class/qx/bom/request/Script.js +11 -35
  47. package/source/class/qx/bom/request/SimpleXhr.js +13 -41
  48. package/source/class/qx/bom/request/Xhr.js +19 -80
  49. package/source/class/qx/bom/storage/Memory.js +2 -0
  50. package/source/class/qx/bom/storage/UserData.js +2 -0
  51. package/source/class/qx/bom/storage/Web.js +2 -0
  52. package/source/class/qx/bom/webfonts/Validator.js +13 -5
  53. package/source/class/qx/core/Assert.js +14 -0
  54. package/source/class/qx/core/BaseInit.js +19 -20
  55. package/source/class/qx/core/Environment.js +23 -20
  56. package/source/class/qx/core/MEvent.js +1 -1
  57. package/source/class/qx/core/MObjectId.js +8 -6
  58. package/source/class/qx/core/MProperty.js +172 -136
  59. package/source/class/qx/core/Object.js +88 -102
  60. package/source/class/qx/core/check/AbstractCheck.js +111 -0
  61. package/source/class/qx/core/check/Any.js +63 -0
  62. package/source/class/qx/core/check/CheckFactory.js +151 -0
  63. package/source/class/qx/core/check/DynamicTypeCheck.js +90 -0
  64. package/source/class/qx/core/check/ICheck.js +75 -0
  65. package/source/class/qx/core/check/IsOneOfCheck.js +63 -0
  66. package/source/class/qx/core/check/JsDocCheck.js +71 -0
  67. package/source/class/qx/core/check/SimpleCheck.js +42 -0
  68. package/source/class/qx/core/check/standard/ArrayCheck.js +49 -0
  69. package/source/class/qx/core/check/standard/BooleanCheck.js +47 -0
  70. package/source/class/qx/core/check/standard/ClassCheck.js +33 -0
  71. package/source/class/qx/core/check/standard/ColorCheck.js +33 -0
  72. package/source/class/qx/core/check/standard/DateCheck.js +49 -0
  73. package/source/class/qx/core/check/standard/DecoratorCheck.js +33 -0
  74. package/source/class/qx/core/check/standard/DocumentCheck.js +40 -0
  75. package/source/class/qx/core/check/standard/ElementCheck.js +40 -0
  76. package/source/class/qx/core/check/standard/ErrorCheck.js +46 -0
  77. package/source/class/qx/core/check/standard/EventCheck.js +40 -0
  78. package/source/class/qx/core/check/standard/FontCheck.js +33 -0
  79. package/source/class/qx/core/check/standard/FunctionCheck.js +49 -0
  80. package/source/class/qx/core/check/standard/IntegerCheck.js +54 -0
  81. package/source/class/qx/core/check/standard/InterfaceCheck.js +33 -0
  82. package/source/class/qx/core/check/standard/MapCheck.js +33 -0
  83. package/source/class/qx/core/check/standard/MixinCheck.js +33 -0
  84. package/source/class/qx/core/check/standard/NodeCheck.js +40 -0
  85. package/source/class/qx/core/check/standard/NumberCheck.js +48 -0
  86. package/source/class/qx/core/check/standard/ObjectCheck.js +33 -0
  87. package/source/class/qx/core/check/standard/PositiveIntegerCheck.js +45 -0
  88. package/source/class/qx/core/check/standard/PositiveNumberCheck.js +45 -0
  89. package/source/class/qx/core/check/standard/PromiseCheck.js +33 -0
  90. package/source/class/qx/core/check/standard/RegExpCheck.js +46 -0
  91. package/source/class/qx/core/check/standard/StringCheck.js +43 -0
  92. package/source/class/qx/core/check/standard/ThemeCheck.js +33 -0
  93. package/source/class/qx/core/check/standard/WindowCheck.js +40 -0
  94. package/source/class/qx/core/property/ExplicitPropertyStorage.js +87 -0
  95. package/source/class/qx/core/property/GroupProperty.js +262 -0
  96. package/source/class/qx/core/property/IProperty.js +46 -0
  97. package/source/class/qx/core/property/IPropertyStorage.js +83 -0
  98. package/source/class/qx/core/property/ImmutableArrayStorage.js +38 -0
  99. package/source/class/qx/core/property/ImmutableDataArrayStorage.js +38 -0
  100. package/source/class/qx/core/property/ImmutableObjectStorage.js +39 -0
  101. package/source/class/qx/core/property/Property.js +1481 -0
  102. package/source/class/qx/core/property/PropertyStorageFactory.js +22 -0
  103. package/source/class/qx/core/property/SimplePropertyStorage.js +105 -0
  104. package/source/class/qx/data/Array.js +102 -57
  105. package/source/class/qx/data/MBinding.js +4 -29
  106. package/source/class/qx/data/SingleValueBinding.js +596 -1495
  107. package/source/class/qx/data/binding/AbstractSegment.js +197 -0
  108. package/source/class/qx/data/binding/ArrayIndexSegment.js +148 -0
  109. package/source/class/qx/data/binding/IInputReceiver.js +14 -0
  110. package/source/class/qx/data/binding/PropNameSegment.js +150 -0
  111. package/source/class/qx/data/controller/CheckedList.js +1 -1
  112. package/source/class/qx/data/controller/Form.js +78 -8
  113. package/source/class/qx/data/controller/Tree.js +27 -117
  114. package/source/class/qx/data/marshal/Json.js +46 -149
  115. package/source/class/qx/data/store/Json.js +0 -2
  116. package/source/class/qx/dev/Debug.js +1 -1
  117. package/source/class/qx/dev/LeakDetector.js +144 -0
  118. package/source/class/qx/dev/unit/AsyncWrapper.js +1 -0
  119. package/source/class/qx/dev/unit/MMock.js +7 -2
  120. package/source/class/qx/dev/unit/Sinon.js +0 -4
  121. package/source/class/qx/dev/unit/TestClass.js +2 -2
  122. package/source/class/qx/dev/unit/TestFunction.js +1 -0
  123. package/source/class/qx/dev/unit/TestLoaderBasic.js +1 -0
  124. package/source/class/qx/dev/unit/TestRunner.js +106 -0
  125. package/source/class/qx/event/IEventDispatcher.js +8 -4
  126. package/source/class/qx/event/Manager.js +4 -0
  127. package/source/class/qx/event/Messaging.js +2 -0
  128. package/source/class/qx/event/Pool.js +7 -0
  129. package/source/class/qx/event/Registration.js +33 -55
  130. package/source/class/qx/event/Timer.js +2 -0
  131. package/source/class/qx/event/Utils.js +25 -8
  132. package/source/class/qx/event/dispatch/AbstractBubbling.js +98 -194
  133. package/source/class/qx/event/dispatch/Direct.js +18 -13
  134. package/source/class/qx/event/handler/Appear.js +20 -24
  135. package/source/class/qx/event/handler/Application.js +4 -0
  136. package/source/class/qx/event/handler/DragDrop.js +182 -385
  137. package/source/class/qx/event/handler/Element.js +3 -0
  138. package/source/class/qx/event/handler/Focus.js +36 -30
  139. package/source/class/qx/event/handler/Input.js +5 -0
  140. package/source/class/qx/event/handler/Keyboard.js +107 -165
  141. package/source/class/qx/event/handler/Pointer.js +39 -68
  142. package/source/class/qx/event/handler/PointerCore.js +7 -25
  143. package/source/class/qx/event/handler/Window.js +5 -0
  144. package/source/class/qx/event/type/Event.js +12 -0
  145. package/source/class/qx/event/type/KeySequence.js +3 -0
  146. package/source/class/qx/event/type/Native.js +3 -0
  147. package/source/class/qx/html/Element.js +26 -91
  148. package/source/class/qx/io/jsonrpc/Client.js +1 -1
  149. package/source/class/qx/io/jsonrpc/protocol/Error.js +2 -2
  150. package/source/class/qx/io/jsonrpc/protocol/Parser.js +1 -0
  151. package/source/class/qx/io/jsonrpc/protocol/Result.js +2 -2
  152. package/source/class/qx/io/request/Xhr.js +3 -8
  153. package/source/class/qx/lang/normalize/Array.js +23 -1
  154. package/source/class/qx/locale/Date.js +520 -113
  155. package/source/class/qx/locale/LocalizedString.js +3 -0
  156. package/source/class/qx/locale/Manager.js +14 -3
  157. package/source/class/qx/locale/Number.js +60 -7
  158. package/source/class/qx/log/Logger.js +1 -1
  159. package/source/class/qx/module/Animation.js +2 -0
  160. package/source/class/qx/module/Attribute.js +2 -0
  161. package/source/class/qx/module/Css.js +7 -24
  162. package/source/class/qx/module/Event.js +2 -0
  163. package/source/class/qx/module/Manipulating.js +2 -0
  164. package/source/class/qx/module/Traversing.js +2 -0
  165. package/source/class/qx/test/Bootstrap.js +68 -53
  166. package/source/class/qx/test/Class.js +310 -2
  167. package/source/class/qx/test/Mixin.js +192 -42
  168. package/source/class/qx/test/Promise.js +129 -331
  169. package/source/class/qx/test/Theme.js +11 -0
  170. package/source/class/qx/test/bom/Font.js +2 -5
  171. package/source/class/qx/test/bom/Template.js +1 -1
  172. package/source/class/qx/test/compiler/ClassFile.js +14 -0
  173. package/source/class/qx/test/core/Assert.js +12 -0
  174. package/source/class/qx/test/core/Environment.js +17 -3
  175. package/source/class/qx/test/core/InheritanceDummy.js +10 -1
  176. package/source/class/qx/test/core/Object.js +51 -24
  177. package/source/class/qx/test/core/ObjectId.js +10 -1
  178. package/source/class/qx/test/core/Property.js +1338 -121
  179. package/source/class/qx/test/core/PropertyHelper.js +12 -0
  180. package/source/class/qx/test/core/Target.js +1 -0
  181. package/source/class/qx/test/core/Validation.js +2 -0
  182. package/source/class/qx/test/data/DataArray.js +218 -639
  183. package/source/class/qx/test/data/DataArrayWithChangeBubble.js +45 -215
  184. package/source/class/qx/test/data/MultiBinding.js +42 -0
  185. package/source/class/qx/test/data/async/__init__.js +4 -0
  186. package/source/class/qx/test/data/controller/Form.js +523 -14
  187. package/source/class/qx/test/data/controller/List.js +94 -426
  188. package/source/class/qx/test/data/controller/ListReverse.js +5 -20
  189. package/source/class/qx/test/data/controller/ListWithObjects.js +49 -225
  190. package/source/class/qx/test/data/controller/Object.js +54 -222
  191. package/source/class/qx/test/data/controller/Tree.js +195 -934
  192. package/source/class/qx/test/data/marshal/Json.js +74 -312
  193. package/source/class/qx/test/data/singlevalue/Array.js +55 -279
  194. package/source/class/qx/test/data/singlevalue/Async.js +173 -0
  195. package/source/class/qx/test/data/singlevalue/Deep.js +148 -327
  196. package/source/class/qx/test/data/singlevalue/Resolve.js +8 -28
  197. package/source/class/qx/test/data/singlevalue/Simple.js +124 -359
  198. package/source/class/qx/test/data/store/Json.js +86 -254
  199. package/source/class/qx/test/data/store/Jsonp.js +9 -29
  200. package/source/class/qx/test/data/store/Offline.js +2 -8
  201. package/source/class/qx/test/data/store/Rest.js +3 -3
  202. package/source/class/qx/test/dev/unit/Requirements.js +26 -10
  203. package/source/class/qx/test/event/GlobalError.js +2 -2
  204. package/source/class/qx/test/html/Iframe.js +1 -1
  205. package/source/class/qx/test/io/graphql/Client.js +2 -0
  206. package/source/class/qx/test/io/jsonrpc/Protocol.js +4 -2
  207. package/source/class/qx/test/io/request/MRequest.js +2 -8
  208. package/source/class/qx/test/io/request/Xhr.js +27 -117
  209. package/source/class/qx/test/lang/Function.js +6 -25
  210. package/source/class/qx/test/lang/Type.js +31 -13
  211. package/source/class/qx/test/locale/Date.js +173 -2
  212. package/source/class/qx/test/locale/Locale.js +23 -28
  213. package/source/class/qx/test/locale/Number.js +71 -0
  214. package/source/class/qx/test/log/Logger.js +7 -1
  215. package/source/class/qx/test/log/fixture/ClassA.js +2 -5
  216. package/source/class/qx/test/mobile/basic/Atom.js +3 -3
  217. package/source/class/qx/test/mobile/container/Scroll.js +4 -4
  218. package/source/class/qx/test/mobile/form/CheckBox.js +6 -12
  219. package/source/class/qx/test/performance/Property.js +5 -4
  220. package/source/class/qx/test/performance/widget/WidgetWithDecorator.js +2 -0
  221. package/source/class/qx/test/theme/Simple.js +34 -0
  222. package/source/class/qx/test/{MAppearance.js → theme/SimpleAppearance.js} +5 -4
  223. package/source/class/qx/test/{MDecoration.js → theme/SimpleDecoration.js} +6 -4
  224. package/source/class/qx/test/theme/manager/Meta.js +7 -5
  225. package/source/class/qx/test/tool/__init__.js +3 -0
  226. package/source/class/qx/test/tool/cli/AbstractValue.js +274 -0
  227. package/source/class/qx/test/tool/cli/Argument.js +384 -0
  228. package/source/class/qx/test/tool/cli/Command.js +387 -0
  229. package/source/class/qx/test/tool/cli/Flag.js +413 -0
  230. package/source/class/qx/test/tool/cli/__init__.js +3 -0
  231. package/source/class/qx/test/ui/LayoutTestCase.js +1 -14
  232. package/source/class/qx/test/ui/basic/Label.js +106 -0
  233. package/source/class/qx/test/ui/core/Blocker.js +125 -3
  234. package/source/class/qx/test/ui/form/Form.js +106 -0
  235. package/source/class/qx/test/ui/form/FormManager.js +6 -5
  236. package/source/class/qx/test/ui/form/SplitButton.js +1 -1
  237. package/source/class/qx/test/ui/toolbar/OverflowHandling.js +13 -14
  238. package/source/class/qx/test/ui/toolbar/ToolBar.js +16 -16
  239. package/source/class/qx/test/ui/tree/TreeFolder.js +5 -7
  240. package/source/class/qx/test/ui/tree/virtual/AbstractTreeTest.js +2 -0
  241. package/source/class/qx/test/ui/tree/virtual/Tree.js +36 -0
  242. package/source/class/qx/test/util/DateFormat.js +1 -1
  243. package/source/class/qx/test/util/PropertyUtil.js +0 -36
  244. package/source/class/qx/theme/classic/Appearance.js +1 -1
  245. package/source/class/qx/theme/indigo/ColorDark.js +2 -0
  246. package/source/class/qx/theme/manager/Font.js +6 -1
  247. package/source/class/qx/theme/manager/Meta.js +2 -1
  248. package/source/class/qx/theme/simple/Appearance.js +31 -95
  249. package/source/class/qx/theme/simple/Decoration.js +0 -1
  250. package/source/class/qx/theme/tangible/Appearance.js +1 -1
  251. package/source/class/qx/tool/cli/AbstractCliApp.js +72 -0
  252. package/source/class/qx/tool/cli/AbstractValue.js +186 -0
  253. package/source/class/qx/tool/cli/Argument.js +155 -0
  254. package/source/class/qx/tool/cli/Command.js +518 -0
  255. package/source/class/qx/tool/cli/Flag.js +202 -0
  256. package/source/class/qx/tool/cli/Parser.js +39 -0
  257. package/source/class/qx/tool/cli/__init__.js +26 -1
  258. package/source/class/qx/tool/compiler/Analyser.js +41 -13
  259. package/source/class/qx/tool/compiler/ClassFile.js +37 -9
  260. package/source/class/qx/tool/compiler/Console.js +2 -0
  261. package/source/class/qx/tool/compiler/MetaExtraction.js +53 -33
  262. package/source/class/qx/tool/compiler/app/Library.js +1 -1
  263. package/source/class/qx/tool/compiler/app/WebFont.js +2 -0
  264. package/source/class/qx/tool/compiler/cli/Application.js +58 -0
  265. package/source/class/qx/tool/{cli/commands → compiler/cli}/Command.js +99 -45
  266. package/source/class/qx/tool/{cli → compiler/cli}/ConfigDb.js +7 -7
  267. package/source/class/qx/tool/compiler/cli/ConfigLoader.js +272 -0
  268. package/source/class/qx/tool/{cli → compiler/cli}/LibraryApplication.js +3 -3
  269. package/source/class/qx/tool/compiler/cli/RootCommand.js +63 -0
  270. package/source/class/qx/tool/{cli → compiler/cli}/Watch.js +49 -24
  271. package/source/class/qx/tool/compiler/cli/__init__.js +3 -0
  272. package/source/class/qx/tool/{cli → compiler/cli}/api/AbstractApi.js +2 -11
  273. package/source/class/qx/tool/{cli → compiler/cli}/api/CompilerApi.js +11 -10
  274. package/source/class/qx/tool/{cli → compiler/cli}/api/LibraryApi.js +13 -4
  275. package/source/class/qx/tool/{cli → compiler/cli}/api/Test.js +1 -1
  276. package/source/class/qx/tool/compiler/cli/commands/Add.js +49 -0
  277. package/source/class/qx/tool/{cli → compiler/cli}/commands/Clean.js +12 -25
  278. package/source/class/qx/tool/{cli → compiler/cli}/commands/Compile.js +524 -615
  279. package/source/class/qx/tool/{cli → compiler/cli}/commands/Config.js +22 -20
  280. package/source/class/qx/tool/{cli → compiler/cli}/commands/Create.js +77 -54
  281. package/source/class/qx/tool/{cli → compiler/cli}/commands/Deploy.js +45 -60
  282. package/source/class/qx/tool/{cli → compiler/cli}/commands/Es6ify.js +57 -41
  283. package/source/class/qx/tool/{cli → compiler/cli}/commands/ExportGlyphs.js +26 -7
  284. package/source/class/qx/tool/compiler/cli/commands/Lint.js +420 -0
  285. package/source/class/qx/tool/{cli → compiler/cli}/commands/Migrate.js +40 -20
  286. package/source/class/qx/tool/{cli → compiler/cli}/commands/Package.js +20 -32
  287. package/source/class/qx/tool/compiler/cli/commands/Pkg.js +36 -0
  288. package/source/class/qx/tool/compiler/cli/commands/Prettier.js +278 -0
  289. package/source/class/qx/tool/{cli → compiler/cli}/commands/Run.js +43 -39
  290. package/source/class/qx/tool/{cli → compiler/cli}/commands/Serve.js +63 -61
  291. package/source/class/qx/tool/{cli → compiler/cli}/commands/Test.js +49 -52
  292. package/source/class/qx/tool/{cli → compiler/cli}/commands/Typescript.js +51 -30
  293. package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Class.js +54 -31
  294. package/source/class/qx/tool/{cli → compiler/cli}/commands/add/Script.js +56 -32
  295. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Delete.js +19 -13
  296. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Get.js +19 -13
  297. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/List.js +20 -20
  298. package/source/class/qx/tool/{cli → compiler/cli}/commands/config/Set.js +28 -20
  299. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Install.js +140 -75
  300. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/List.js +119 -80
  301. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Publish.js +194 -178
  302. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Remove.js +18 -21
  303. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Update.js +90 -69
  304. package/source/class/qx/tool/{cli → compiler/cli}/commands/package/Upgrade.js +67 -54
  305. package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +2 -1
  306. package/source/class/qx/tool/compiler/resources/Manager.js +2 -0
  307. package/source/class/qx/tool/compiler/resources/ScssConverter.js +1 -1
  308. package/source/class/qx/tool/compiler/resources/ScssFile.js +1 -1
  309. package/source/class/qx/tool/compiler/targets/Target.js +5 -10
  310. package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +6 -2
  311. package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +2 -4
  312. package/source/class/qx/tool/compiler/targets/meta/BootJs.js +2 -0
  313. package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +2 -0
  314. package/source/class/qx/tool/config/Abstract.js +5 -5
  315. package/source/class/qx/tool/config/Lockfile.js +1 -1
  316. package/source/class/qx/tool/migration/BaseMigration.js +9 -7
  317. package/source/class/qx/tool/migration/M6_0_0.js +3 -3
  318. package/source/class/qx/tool/migration/M8_0_0.js +958 -0
  319. package/source/class/qx/tool/utils/Debounce.js +0 -1
  320. package/source/class/qx/tool/utils/Http.js +109 -21
  321. package/source/class/qx/tool/utils/LogManager.js +7 -0
  322. package/source/class/qx/tool/utils/Promisify.js +12 -1
  323. package/source/class/qx/tool/utils/QooxdooVersions.js +193 -0
  324. package/source/class/qx/tool/utils/Utils.js +8 -5
  325. package/source/class/qx/tool/utils/Website.js +9 -222
  326. package/source/class/qx/tool/utils/Zip.js +47 -0
  327. package/source/class/qx/tool/utils/files/Utils.js +3 -11
  328. package/source/class/qx/tool/utils/json/Tokenizer.js +5 -0
  329. package/source/class/qx/ui/basic/Atom.js +8 -8
  330. package/source/class/qx/ui/core/Blocker.js +17 -4
  331. package/source/class/qx/ui/core/DragDropCursor.js +2 -1
  332. package/source/class/qx/ui/core/EventHandler.js +13 -21
  333. package/source/class/qx/ui/core/LayoutItem.js +8 -31
  334. package/source/class/qx/ui/core/MExecutable.js +7 -31
  335. package/source/class/qx/ui/core/MNativeOverflow.js +4 -2
  336. package/source/class/qx/ui/core/Widget.js +50 -165
  337. package/source/class/qx/ui/core/scroll/IScrollBar.js +9 -3
  338. package/source/class/qx/ui/core/scroll/ScrollBar.js +7 -1
  339. package/source/class/qx/ui/core/scroll/ScrollPane.js +12 -4
  340. package/source/class/qx/ui/embed/Html.js +6 -2
  341. package/source/class/qx/ui/form/AbstractField.js +4 -12
  342. package/source/class/qx/ui/form/Button.js +6 -4
  343. package/source/class/qx/ui/form/CheckedSelectBox.js +8 -8
  344. package/source/class/qx/ui/form/FileSelectorButton.js +1 -1
  345. package/source/class/qx/ui/form/Form.js +3 -0
  346. package/source/class/qx/ui/form/IListItem.js +3 -1
  347. package/source/class/qx/ui/form/IRadioItem.js +3 -1
  348. package/source/class/qx/ui/form/MForm.js +3 -1
  349. package/source/class/qx/ui/form/Slider.js +6 -2
  350. package/source/class/qx/ui/form/SplitButton.js +5 -5
  351. package/source/class/qx/ui/form/TextField.js +1 -2
  352. package/source/class/qx/ui/form/validation/Manager.js +6 -2
  353. package/source/class/qx/ui/menubar/Button.js +1 -1
  354. package/source/class/qx/ui/mobile/basic/Atom.js +5 -5
  355. package/source/class/qx/ui/mobile/dialog/Menu.js +9 -31
  356. package/source/class/qx/ui/mobile/dialog/Popup.js +13 -1
  357. package/source/class/qx/ui/table/pane/FocusIndicator.js +5 -2
  358. package/source/class/qx/ui/table/pane/Scroller.js +5 -20
  359. package/source/class/qx/ui/table/selection/Model.js +1 -0
  360. package/source/class/qx/ui/toolbar/Button.js +1 -1
  361. package/source/class/qx/ui/toolbar/CheckBox.js +1 -1
  362. package/source/class/qx/ui/toolbar/FileSelectorButton.js +1 -2
  363. package/source/class/qx/ui/toolbar/Part.js +2 -2
  364. package/source/class/qx/ui/toolbar/PartContainer.js +2 -2
  365. package/source/class/qx/ui/toolbar/ToolBar.js +24 -49
  366. package/source/class/qx/ui/tree/VirtualTree.js +6 -4
  367. package/source/class/qx/ui/tree/core/AbstractItem.js +10 -17
  368. package/source/class/qx/ui/tree/core/IVirtualTree.js +4 -2
  369. package/source/class/qx/ui/tree/provider/IVirtualTreeProvider.js +20 -10
  370. package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +4 -1
  371. package/source/class/qx/ui/virtual/cell/Cell.js +20 -48
  372. package/source/class/qx/ui/virtual/cell/WidgetCell.js +2 -4
  373. package/source/class/qx/ui/virtual/core/Axis.js +4 -0
  374. package/source/class/qx/ui/virtual/core/ILayer.js +14 -10
  375. package/source/class/qx/ui/virtual/core/Scroller.js +4 -4
  376. package/source/class/qx/ui/virtual/layer/WidgetCell.js +4 -0
  377. package/source/class/qx/ui/virtual/selection/Abstract.js +3 -0
  378. package/source/class/qx/ui/virtual/selection/MModel.js +1 -1
  379. package/source/class/qx/ui/window/IDesktop.js +6 -2
  380. package/source/class/qx/ui/window/IWindowManager.js +10 -4
  381. package/source/class/qx/ui/window/MDesktop.js +2 -1
  382. package/source/class/qx/ui/window/Manager.js +1 -1
  383. package/source/class/qx/ui/window/Window.js +6 -4
  384. package/source/class/qx/util/OOUtil.js +8 -9
  385. package/source/class/qx/util/PropertyUtil.js +34 -154
  386. package/source/class/qx/util/ResponseParser.js +2 -0
  387. package/source/class/qx/util/Serializer.js +69 -114
  388. package/source/class/qx/util/format/DateFormat.js +3 -2
  389. package/source/global.d.ts +4 -0
  390. package/source/resource/qx/tool/bin/download-assets +0 -2
  391. package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-node.tmpl.js +1 -0
  392. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/cli/templates/template_vars.js +12 -9
  393. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/Manifest-1-0-0.json +2 -2
  394. package/source/resource/qx/tool/{schema → compiler/schema}/Manifest-2-0-0.json +2 -2
  395. package/source/resource/qx/tool/{schema → compiler/schema}/compile-1-0-0.json +15 -3
  396. package/{lib/resource/qx/tool → source/resource/qx/tool/compiler}/schema/qooxdoo-1-0-0.json +1 -1
  397. package/source/resource/qx/tool/website/build/404.html +22 -22
  398. package/source/resource/qx/tool/website/build/about.html +23 -23
  399. package/source/resource/qx/tool/website/build/assets/common.js +30 -18
  400. package/source/resource/qx/tool/website/build/assets/custom.css +290 -0
  401. package/source/resource/qx/tool/website/build/assets/qxWeb.js +28 -0
  402. package/source/resource/qx/tool/website/build/diagnostics/dependson.html +30 -30
  403. package/source/resource/qx/tool/website/build/diagnostics/dependson.js +49 -40
  404. package/source/resource/qx/tool/website/build/diagnostics/requiredby.html +20 -23
  405. package/source/resource/qx/tool/website/build/diagnostics/requiredby.js +38 -31
  406. package/source/resource/qx/tool/website/build/index.html +24 -24
  407. package/source/resource/qx/tool/website/build/scripts/serve.js +63 -65
  408. package/source/resource/qx/tool/website/partials/footer.html +8 -13
  409. package/source/resource/qx/tool/website/partials/head.html +9 -7
  410. package/source/resource/qx/tool/website/partials/header.html +3 -3
  411. package/source/resource/qx/tool/website/src/assets/common.js +32 -0
  412. package/source/resource/qx/tool/website/src/assets/custom.css +290 -0
  413. package/source/resource/qx/tool/website/src/assets/qxWeb.js +28 -0
  414. package/source/resource/qx/tool/website/src/diagnostics/dependson.js +49 -40
  415. package/source/resource/qx/tool/website/src/diagnostics/requiredby.js +38 -31
  416. package/source/resource/qx/tool/website/src/index.html +2 -2
  417. package/source/resource/qx/tool/website/src/scripts/serve.js +63 -65
  418. package/lib/resource/qx/tool/bin/build-devtools +0 -13
  419. package/lib/resource/qx/tool/bin/build-website +0 -15
  420. package/lib/resource/qx/tool/bin/download-assets +0 -23
  421. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +0 -1
  422. package/lib/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
  423. package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
  424. package/lib/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
  425. package/lib/resource/qx/tool/website/build/assets/jquery.js +0 -5453
  426. package/lib/resource/qx/tool/website/build/qooxdoo.css +0 -21
  427. package/lib/resource/qx/tool/website/sass/qooxdoo.css +0 -3
  428. package/lib/resource/qx/tool/website/sass/qooxdoo.css.map +0 -1
  429. package/lib/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
  430. package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
  431. package/lib/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
  432. package/lib/resource/qx/tool/website/src/assets/jquery.js +0 -5453
  433. package/source/class/qx/core/Property.js +0 -2100
  434. package/source/class/qx/tool/cli/Application.js +0 -47
  435. package/source/class/qx/tool/cli/Cli.js +0 -713
  436. package/source/class/qx/tool/cli/commands/Add.js +0 -46
  437. package/source/class/qx/tool/cli/commands/Lint.js +0 -255
  438. package/source/class/qx/tool/cli/commands/Pkg.js +0 -56
  439. package/source/class/qx/tool/cli/commands/package/Migrate.js +0 -37
  440. package/source/class/qx/tool/compiler/app/Cldr.js +0 -725
  441. package/source/resource/qx/tool/bin/build-devtools +0 -13
  442. package/source/resource/qx/tool/bin/build-website +0 -15
  443. package/source/resource/qx/tool/website/build/assets/bootstrap.css +0 -7
  444. package/source/resource/qx/tool/website/build/assets/bootstrap.min.css +0 -7
  445. package/source/resource/qx/tool/website/build/assets/bootstrap.min.css.map +0 -1
  446. package/source/resource/qx/tool/website/build/assets/jquery.js +0 -5453
  447. package/source/resource/qx/tool/website/build/qooxdoo.css +0 -21
  448. package/source/resource/qx/tool/website/sass/qooxdoo.scss +0 -31
  449. package/source/resource/qx/tool/website/src/assets/bootstrap.css +0 -7
  450. package/source/resource/qx/tool/website/src/assets/bootstrap.min.css +0 -7
  451. package/source/resource/qx/tool/website/src/assets/bootstrap.min.css.map +0 -1
  452. package/source/resource/qx/tool/website/src/assets/jquery.js +0 -5453
  453. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
  454. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +0 -0
  455. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
  456. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
  457. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
  458. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/class/singleton.tmpl.js +0 -0
  459. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
  460. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
  461. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
  462. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
  463. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
  464. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
  465. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
  466. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
  467. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
  468. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
  469. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
  470. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
  471. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
  472. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
  473. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
  474. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
  475. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
  476. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
  477. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
  478. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
  479. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
  480. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
  481. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
  482. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
  483. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
  484. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
  485. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
  486. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
  487. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
  488. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
  489. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
  490. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
  491. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
  492. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
  493. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
  494. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
  495. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/css/custom.css +0 -0
  496. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
  497. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
  498. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
  499. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
  500. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
  501. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
  502. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
  503. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
  504. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
  505. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
  506. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
  507. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
  508. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
  509. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
  510. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
  511. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
  512. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
  513. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
  514. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
  515. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
  516. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
  517. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
  518. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
  519. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
  520. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
  521. /package/lib/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
  522. /package/lib/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
  523. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/TypeScriptWriter-base_declaration.d.ts +0 -0
  524. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/default.tmpl.js +0 -0
  525. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/header.tmpl.js +0 -0
  526. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/interface.tmpl.js +0 -0
  527. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/mixin.tmpl.js +0 -0
  528. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/class/singleton.tmpl.js +0 -0
  529. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-browser.tmpl.js +0 -0
  530. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/loader/loader-rhino.tmpl.js +0 -0
  531. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/.gitignore.tmpl +0 -0
  532. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/Manifest.tmpl.json +0 -0
  533. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/compile.tmpl.json +0 -0
  534. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/readme.tmpl.md +0 -0
  535. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/index.tmpl.html +0 -0
  536. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/boot/nojs.tmpl.html +0 -0
  537. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +0 -0
  538. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js +0 -0
  539. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +0 -0
  540. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js +0 -0
  541. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js +0 -0
  542. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js +0 -0
  543. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js +0 -0
  544. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js +0 -0
  545. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/app.png +0 -0
  546. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/favicon.png +0 -0
  547. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/js_256x256.png +0 -0
  548. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/resource/custom/test.png +0 -0
  549. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/desktop/source/translation/readme.txt +0 -0
  550. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/.gitignore.tmpl +0 -0
  551. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/Manifest.tmpl.json +0 -0
  552. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/compile.tmpl.json +0 -0
  553. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/readme.tmpl.md +0 -0
  554. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/index.tmpl.html +0 -0
  555. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/boot/nojs.tmpl.html +0 -0
  556. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +0 -0
  557. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js +0 -0
  558. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +0 -0
  559. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +0 -0
  560. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js +0 -0
  561. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/app.png +0 -0
  562. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl +0 -0
  563. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/favicon.png +0 -0
  564. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/resource/custom/js_256x256.png +0 -0
  565. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/_styles.scss +0 -0
  566. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/theme/custom/scss/custom.scss +0 -0
  567. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/mobile/source/translation/readme.txt +0 -0
  568. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/.gitignore.tmpl +0 -0
  569. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/Manifest.tmpl.json +0 -0
  570. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/compile.tmpl.json +0 -0
  571. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/readme.tmpl.md +0 -0
  572. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/Button.tmpl.js +0 -0
  573. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/__init__.tmpl.js +0 -0
  574. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +0 -0
  575. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/resource/custom/test.png +0 -0
  576. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +0 -0
  577. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js +0 -0
  578. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js +0 -0
  579. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js +0 -0
  580. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js +0 -0
  581. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js +0 -0
  582. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/resource/custom/test.png +0 -0
  583. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/package/source/translation/readme.txt +0 -0
  584. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/.gitignore.tmpl +0 -0
  585. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/Manifest.tmpl.json +0 -0
  586. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/compile.tmpl.json +0 -0
  587. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/readme.tmpl.txt +0 -0
  588. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/Application.tmpl.js +0 -0
  589. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/__init__.tmpl.js +0 -0
  590. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +0 -0
  591. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/resource/custom/.gitignore.tmpl +0 -0
  592. /package/source/resource/qx/tool/{cli → compiler/cli}/templates/skeleton/server/source/translation/readme.txt +0 -0
  593. /package/source/resource/qx/tool/{loadsass.js → compiler/loadsass.js} +0 -0
@@ -18,59 +18,12 @@
18
18
  /**
19
19
  * Test-Class for testing the single value binding
20
20
  *
21
- * @ignore(qx.test.MultiBinding)
21
+ * @ignore(qx.test.data.MultiBinding)
22
22
  */
23
23
  qx.Class.define("qx.test.data.singlevalue.Deep", {
24
24
  extend: qx.dev.unit.TestCase,
25
25
  include: [qx.dev.unit.MMock],
26
26
 
27
- construct() {
28
- super();
29
-
30
- // define a test class
31
- qx.Class.define("qx.test.MultiBinding", {
32
- extend: qx.core.Object,
33
-
34
- properties: {
35
- child: {
36
- check: "qx.test.MultiBinding",
37
- event: "changeChild",
38
- nullable: true
39
- },
40
-
41
- childWithout: {
42
- check: "qx.test.MultiBinding",
43
- nullable: true
44
- },
45
-
46
- name: {
47
- check: "String",
48
- nullable: true,
49
- init: "Juhu",
50
- event: "changeName"
51
- },
52
-
53
- array: {
54
- init: null,
55
- event: "changeArray"
56
- },
57
-
58
- lab: {
59
- event: "changeLable"
60
- }
61
- },
62
-
63
- destruct() {
64
- if (this.getLab()) {
65
- this.getLab().dispose();
66
- }
67
- if (this.getArray()) {
68
- this.getArray().dispose();
69
- }
70
- }
71
- });
72
- },
73
-
74
27
  members: {
75
28
  __a: null,
76
29
  __b1: null,
@@ -78,19 +31,19 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
78
31
  __label: null,
79
32
 
80
33
  setUp() {
81
- this.__a = new qx.test.MultiBinding().set({
34
+ this.__a = new qx.test.data.MultiBinding().set({
82
35
  name: "a",
83
36
  lab: new qx.test.data.singlevalue.TextFieldDummy(""),
84
37
  array: new qx.data.Array(["one", "two", "three"])
85
38
  });
86
39
 
87
- this.__b1 = new qx.test.MultiBinding().set({
40
+ this.__b1 = new qx.test.data.MultiBinding().set({
88
41
  name: "b1",
89
42
  lab: new qx.test.data.singlevalue.TextFieldDummy(""),
90
43
  array: new qx.data.Array(["one", "two", "three"])
91
44
  });
92
45
 
93
- this.__b2 = new qx.test.MultiBinding().set({
46
+ this.__b2 = new qx.test.data.MultiBinding().set({
94
47
  name: "b2",
95
48
  lab: new qx.test.data.singlevalue.TextFieldDummy(""),
96
49
  array: new qx.data.Array(["one", "two", "three"])
@@ -137,13 +90,17 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
137
90
  var m = qx.data.marshal.Json.createModel({ a: null });
138
91
  var t = qx.data.marshal.Json.createModel({ a: null });
139
92
 
140
- var spy = this.spy(function () {
141
- return 123;
93
+ var called = false;
94
+ m.bind("a.b", t, "a", {
95
+ converter: (data, model, source, target) => {
96
+ this.assertFalse(called, "Converter already called!");
97
+ called = true;
98
+ this.assertEquals(source, m, "Source is not as expected");
99
+ this.assertEquals(target, t, "Target is not as expected");
100
+ return 123;
101
+ }
142
102
  });
143
- m.bind("a.b", t, "a", { converter: spy });
144
103
 
145
- this.assertCalledOnce(spy);
146
- this.assertCalledWith(spy, undefined, undefined, m, t);
147
104
  this.assertEquals(123, t.getA());
148
105
 
149
106
  m.dispose();
@@ -157,46 +114,30 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
157
114
 
158
115
  // create the binding
159
116
  // a --> b1 --> label
160
- qx.data.SingleValueBinding.bind(
161
- this.__a,
162
- "child.name",
163
- this.__label,
164
- "value"
165
- );
117
+ qx.data.SingleValueBinding.bind(this.__a, "child.name", this.__label, "value");
166
118
 
167
119
  // just set the name of the second component
168
120
  this.__b1.setName("B1");
169
- this.assertEquals(
170
- "B1",
171
- this.__label.getValue(),
172
- "Deep binding does not work with updating the first parameter."
173
- );
121
+ this.assertEquals("B1", this.__label.getValue(), "Deep binding does not work with updating the first parameter.");
174
122
 
175
123
  // change the second component
176
124
  // a --> b2 --> label
177
125
  this.__a.setChild(this.__b2);
178
- this.assertEquals(
179
- "b2",
180
- this.__label.getValue(),
181
- "Deep binding does not work with updating the first parameter."
182
- );
126
+ this.assertEquals("b2", this.__label.getValue(), "Deep binding does not work with updating the first parameter.");
183
127
 
184
128
  // check for the null value
185
129
  // a --> null
186
130
  this.__a.setChild(null);
187
- this.assertNull(
188
- this.__label.getValue(),
189
- "Binding does not work with null."
190
- );
131
+ this.assertNull(this.__label.getValue(), "Binding does not work with null.");
191
132
  },
192
133
 
193
134
  testDepthOf3(attribute) {
194
135
  // create a hierarchy
195
- var c1 = new qx.test.MultiBinding().set({
136
+ var c1 = new qx.test.data.MultiBinding().set({
196
137
  name: "c1"
197
138
  });
198
139
 
199
- var c2 = new qx.test.MultiBinding().set({
140
+ var c2 = new qx.test.data.MultiBinding().set({
200
141
  name: "c2"
201
142
  });
202
143
 
@@ -207,68 +148,45 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
207
148
  this.__b2.setChild(c2);
208
149
 
209
150
  // create the binding
210
- qx.data.SingleValueBinding.bind(
211
- this.__a,
212
- "child.child.name",
213
- this.__label,
214
- "value"
215
- );
151
+ qx.data.SingleValueBinding.bind(this.__a, "child.child.name", this.__label, "value");
216
152
 
217
153
  // just set the name of the last component
218
154
  c1.setName("C1");
219
- this.assertEquals(
220
- "C1",
221
- this.__label.getValue(),
222
- "Deep binding does not work with updating the third parameter."
223
- );
155
+ this.assertEquals("C1", this.__label.getValue(), "Deep binding does not work with updating the third parameter.");
224
156
 
225
157
  // change the middle child
226
158
  // a --> b2 --> c2 --> label
227
159
  this.__a.setChild(this.__b2);
228
- this.assertEquals(
229
- "c2",
230
- this.__label.getValue(),
231
- "Deep binding does not work with updating the second parameter."
232
- );
160
+ this.assertEquals("c2", this.__label.getValue(), "Deep binding does not work with updating the second parameter.");
233
161
 
234
162
  // set the middle child to null
235
163
  // a --> null
236
164
  this.__a.setChild(null);
237
- this.assertNull(
238
- this.__label.getValue(),
239
- "Deep binding does not work with first null child."
240
- );
165
+ this.assertNull(this.__label.getValue(), "Deep binding does not work with first null child.");
241
166
 
242
167
  // set only two childs
243
168
  // a --> b1 --> null
244
169
  this.__b1.setChild(null);
245
170
  this.__a.setChild(this.__b1);
246
- this.assertNull(
247
- this.__label.getValue(),
248
- "Deep binding does not work with second null child."
249
- );
171
+ this.assertNull(this.__label.getValue(), "Deep binding does not work with second null child.");
250
172
 
251
173
  // set the childs in a row
252
174
  // a --> b1 --> c1 --> label
253
175
  this.__b1.setChild(c1);
254
- this.assertEquals(
255
- "C1",
256
- this.__label.getValue(),
257
- "Deep binding does not work with updating the third parameter."
258
- );
176
+ this.assertEquals("C1", this.__label.getValue(), "Deep binding does not work with updating the third parameter.");
259
177
  },
260
178
 
261
179
  testDepthOf5(attribute) {
262
180
  // create a hierarchy
263
- var c = new qx.test.MultiBinding().set({
181
+ var c = new qx.test.data.MultiBinding().set({
264
182
  name: "c"
265
183
  });
266
184
 
267
- var d = new qx.test.MultiBinding().set({
185
+ var d = new qx.test.data.MultiBinding().set({
268
186
  name: "d"
269
187
  });
270
188
 
271
- var e = new qx.test.MultiBinding().set({
189
+ var e = new qx.test.data.MultiBinding().set({
272
190
  name: "e"
273
191
  });
274
192
 
@@ -279,19 +197,10 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
279
197
  d.setChild(e);
280
198
 
281
199
  // create the binding
282
- qx.data.SingleValueBinding.bind(
283
- this.__a,
284
- "child.child.child.child.name",
285
- this.__label,
286
- "value"
287
- );
200
+ qx.data.SingleValueBinding.bind(this.__a, "child.child.child.child.name", this.__label, "value");
288
201
 
289
202
  // test if the binding did work
290
- this.assertEquals(
291
- "e",
292
- this.__label.getValue(),
293
- "Deep binding does not work with updating the third parameter."
294
- );
203
+ this.assertEquals("e", this.__label.getValue(), "Deep binding does not work with updating the third parameter.");
295
204
  },
296
205
 
297
206
  testWrongDeep() {
@@ -330,31 +239,18 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
330
239
  qx.data.SingleValueBinding.bind(this.__a, "name", this.__label, "value");
331
240
 
332
241
  // chech the initial value
333
- this.assertEquals(
334
- "a",
335
- this.__label.getValue(),
336
- "Single property names don't work!"
337
- );
242
+ this.assertEquals("a", this.__label.getValue(), "Single property names don't work!");
338
243
 
339
244
  // check the binding
340
245
  this.__a.setName("A");
341
- this.assertEquals(
342
- "A",
343
- this.__label.getValue(),
344
- "Single property names don't work!"
345
- );
246
+ this.assertEquals("A", this.__label.getValue(), "Single property names don't work!");
346
247
  },
347
248
 
348
249
  testDebug(attribute) {
349
250
  // build the structure
350
251
  this.__a.setChild(this.__b1);
351
252
  // bind the stuff together
352
- var id = qx.data.SingleValueBinding.bind(
353
- this.__a,
354
- "child.name",
355
- this.__label,
356
- "value"
357
- );
253
+ var id = qx.data.SingleValueBinding.bind(this.__a, "child.name", this.__label, "value");
358
254
 
359
255
  // log this binding in the console
360
256
  qx.data.SingleValueBinding.showBindingInLog(this.__a, id);
@@ -364,53 +260,25 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
364
260
  // build the structure
365
261
  this.__a.setChild(this.__b1);
366
262
  // bind the stuff together
367
- var id = qx.data.SingleValueBinding.bind(
368
- this.__a,
369
- "child.name",
370
- this.__label,
371
- "value"
372
- );
263
+ var id = qx.data.SingleValueBinding.bind(this.__a, "child.name", this.__label, "value");
373
264
 
374
265
  // check the binding
375
266
  this.__b1.setName("A");
376
- this.assertEquals(
377
- "A",
378
- this.__label.getValue(),
379
- "Single property names don't work!"
380
- );
267
+ this.assertEquals("A", this.__label.getValue(), "Single property names don't work!");
381
268
 
382
269
  // remove the binding
383
270
  qx.data.SingleValueBinding.removeBindingFromObject(this.__a, id);
384
271
 
385
272
  // check the binding again
386
273
  this.__a.setName("A2");
387
- this.assertEquals(
388
- "A",
389
- this.__label.getValue(),
390
- "Removing does not work!"
391
- );
274
+ this.assertEquals("A", this.__label.getValue(), "Removing does not work!");
392
275
 
393
276
  // smoke Test for the remove
394
- qx.data.SingleValueBinding.bind(
395
- this.__a,
396
- "child.name",
397
- this.__label,
398
- "value"
399
- );
400
-
401
- qx.data.SingleValueBinding.bind(
402
- this.__a,
403
- "child.name",
404
- this.__label,
405
- "value"
406
- );
407
-
408
- qx.data.SingleValueBinding.bind(
409
- this.__a,
410
- "child.name",
411
- this.__label,
412
- "value"
413
- );
277
+ qx.data.SingleValueBinding.bind(this.__a, "child.name", this.__label, "value");
278
+
279
+ qx.data.SingleValueBinding.bind(this.__a, "child.name", this.__label, "value");
280
+
281
+ qx.data.SingleValueBinding.bind(this.__a, "child.name", this.__label, "value");
414
282
  },
415
283
 
416
284
  testArrayDeep() {
@@ -419,112 +287,79 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
419
287
  this.__b1.setChild(this.__b2);
420
288
  this.__b2.setChild(this.__b1);
421
289
 
422
- qx.data.SingleValueBinding.bind(
423
- this.__a,
424
- "array[0].child.name",
425
- this.__label,
426
- "value"
427
- );
290
+ qx.data.SingleValueBinding.bind(this.__a, "array[0].child.name", this.__label, "value");
428
291
 
429
- this.assertEquals(
430
- "b2",
431
- this.__label.getValue(),
432
- "Deep binding does not work."
433
- );
292
+ this.assertEquals("b2", this.__label.getValue(), "Deep binding does not work.");
434
293
 
435
294
  this.__a.getArray().pop();
436
295
  this.assertNull(this.__label.getValue(), "Deep binding does not work.");
437
296
 
438
297
  this.__a.getArray().push(this.__b2);
439
- this.assertEquals(
440
- "b1",
441
- this.__label.getValue(),
442
- "Deep binding does not work."
443
- );
298
+ this.assertEquals("b1", this.__label.getValue(), "Deep binding does not work.");
444
299
 
445
300
  this.__b1.setName("B1");
446
- this.assertEquals(
447
- "B1",
448
- this.__label.getValue(),
449
- "Deep binding does not work."
450
- );
301
+ this.assertEquals("B1", this.__label.getValue(), "Deep binding does not work.");
302
+ },
303
+
304
+ /**
305
+ * Tests that if the path becomes broken,
306
+ * the target is reset to the init value,
307
+ * which may not be null!
308
+ */
309
+ testTargetInitNotNull() {
310
+ this.__a.setArray(new qx.data.Array([this.__a]));
311
+ this.__a.setChild(this.__a);
312
+ this.__a.setName("Jakub");
313
+
314
+ this.assertEquals("b2", this.__b2.getName(), "b2 name changed unexpectedly");
315
+
316
+ qx.data.SingleValueBinding.bind(this.__a, "array[0].child.name", this.__b2, "name");
317
+
318
+ this.assertEquals("Jakub", this.__b2.getName());
319
+ this.__a.getArray().pop();
320
+ this.assertEquals("Juhu", this.__b2.getName());
321
+
322
+ this.__a.getArray().push(this.__a);
323
+ this.assertEquals("Jakub", this.__b2.getName());
324
+ this.__a.resetChild();
325
+ this.assertEquals("Juhu", this.__b2.getName(), "Resetting child does not work.");
451
326
  },
452
327
 
453
328
  testDeepTarget() {
454
329
  qx.data.SingleValueBinding.bind(this.__a, "name", this.__b1, "lab.value");
455
330
 
456
- this.assertEquals(
457
- "a",
458
- this.__b1.getLab().getValue(),
459
- "Deep binding on the target does not work."
460
- );
331
+ this.assertEquals("a", this.__b1.getLab().getValue(), "Deep binding on the target does not work.");
461
332
  },
462
333
 
463
334
  testDeepTarget2() {
464
335
  this.__b2.setChild(this.__b1);
465
- qx.data.SingleValueBinding.bind(
466
- this.__a,
467
- "name",
468
- this.__b2,
469
- "child.lab.value"
470
- );
471
-
472
- this.assertEquals(
473
- "a",
474
- this.__b1.getLab().getValue(),
475
- "Deep binding on the target does not work."
476
- );
336
+ qx.data.SingleValueBinding.bind(this.__a, "name", this.__b2, "child.lab.value");
337
+
338
+ this.assertEquals("a", this.__b1.getLab().getValue(), "Deep binding on the target does not work.");
477
339
  },
478
340
 
479
341
  testDeepTargetNull() {
480
- qx.data.SingleValueBinding.bind(
481
- this.__a,
482
- "name",
483
- this.__b2,
484
- "child.lab.value"
485
- );
486
-
487
- this.assertEquals(
488
- "",
489
- this.__b1.getLab().getValue(),
490
- "Deep binding on the target does not work."
491
- );
342
+ qx.data.SingleValueBinding.bind(this.__a, "name", this.__b2, "child.lab.value");
343
+
344
+ this.assertEquals("", this.__b1.getLab().getValue(), "Deep binding on the target does not work.");
492
345
  },
493
346
 
494
347
  testDeepTargetArray() {
495
348
  this.__a.getArray().dispose();
496
349
  this.__a.setArray(new qx.data.Array([this.__b1]));
497
350
 
498
- qx.data.SingleValueBinding.bind(
499
- this.__a,
500
- "name",
501
- this.__a,
502
- "array[0].lab.value"
503
- );
504
-
505
- this.assertEquals(
506
- "a",
507
- this.__b1.getLab().getValue(),
508
- "Deep binding on the target does not work."
509
- );
351
+ qx.data.SingleValueBinding.bind(this.__a, "name", this.__a, "array[0].lab.value");
352
+
353
+ this.assertEquals("a", this.__b1.getLab().getValue(), "Deep binding on the target does not work.");
510
354
  },
511
355
 
512
356
  testDeepTargetArrayLast() {
513
357
  this.__a.getArray().dispose();
514
358
  this.__a.setArray(new qx.data.Array([this.__b1]));
515
359
 
516
- qx.data.SingleValueBinding.bind(
517
- this.__a,
518
- "name",
519
- this.__a,
520
- "array[last].lab.value"
521
- );
522
-
523
- this.assertEquals(
524
- "a",
525
- this.__b1.getLab().getValue(),
526
- "Deep binding on the target does not work."
527
- );
360
+ qx.data.SingleValueBinding.bind(this.__a, "name", this.__a, "array[last].lab.value");
361
+
362
+ this.assertEquals("a", this.__b1.getLab().getValue(), "Deep binding on the target does not work.");
528
363
  },
529
364
 
530
365
  testDeepTargetChange() {
@@ -548,17 +383,11 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
548
383
  var oldLabel = this.__b1.getLab();
549
384
  var newLabel = new qx.test.data.singlevalue.TextFieldDummy("x");
550
385
 
551
- qx.data.SingleValueBinding.bind(
552
- this.__a,
553
- "name",
554
- this.__b1,
555
- "lab.value",
556
- {
557
- converter(data) {
558
- return data + "...";
559
- }
386
+ qx.data.SingleValueBinding.bind(this.__a, "name", this.__b1, "lab.value", {
387
+ converter(data) {
388
+ return data + "...";
560
389
  }
561
- );
390
+ });
562
391
 
563
392
  this.__b1.setLab(newLabel);
564
393
  this.assertEquals("a...", this.__b1.getLab().getValue());
@@ -577,12 +406,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
577
406
  this.__b1.setChild(this.__b2);
578
407
  this.__b2.setChild(this.__b1);
579
408
 
580
- qx.data.SingleValueBinding.bind(
581
- this.__label,
582
- "value",
583
- this.__a,
584
- "child.child.lab.value"
585
- );
409
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "child.child.lab.value");
586
410
 
587
411
  // check the default set
588
412
  this.__label.setValue("123");
@@ -604,12 +428,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
604
428
  this.__b1.setChild(this.__b2);
605
429
  this.__b2.setChild(this.__b1);
606
430
 
607
- var id = qx.data.SingleValueBinding.bind(
608
- this.__label,
609
- "value",
610
- this.__a,
611
- "child.child.lab.value"
612
- );
431
+ var id = qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "child.child.lab.value");
613
432
 
614
433
  // check the default set
615
434
  this.__label.setValue("123");
@@ -619,11 +438,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
619
438
 
620
439
  // change the child of __a
621
440
  this.__a.setChild(this.__b2);
622
- this.assertEquals(
623
- "",
624
- this.__b1.getLab().getValue(),
625
- "listener still there"
626
- );
441
+ this.assertEquals("", this.__b1.getLab().getValue(), "listener still there");
627
442
 
628
443
  // set another label value
629
444
  this.__label.setValue("456");
@@ -632,12 +447,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
632
447
  },
633
448
 
634
449
  testDeepTargetChangeArray() {
635
- qx.data.SingleValueBinding.bind(
636
- this.__label,
637
- "value",
638
- this.__a,
639
- "array[0]"
640
- );
450
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "array[0]");
641
451
 
642
452
  this.__label.setValue("123");
643
453
  this.assertEquals("123", this.__a.getArray().getItem(0));
@@ -656,12 +466,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
656
466
  },
657
467
 
658
468
  testDeepTargetChangeArrayLast() {
659
- qx.data.SingleValueBinding.bind(
660
- this.__label,
661
- "value",
662
- this.__a,
663
- "array[last]"
664
- );
469
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "array[last]");
665
470
 
666
471
  this.__label.setValue("123");
667
472
  this.assertEquals("123", this.__a.getArray().getItem(2));
@@ -685,12 +490,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
685
490
  this.__b1.setChild(this.__b2);
686
491
  this.__b2.setChild(this.__b1);
687
492
 
688
- qx.data.SingleValueBinding.bind(
689
- this.__label,
690
- "value",
691
- this.__a,
692
- "child.child.array[0]"
693
- );
493
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "child.child.array[0]");
694
494
 
695
495
  // check the default set
696
496
  this.__label.setValue("123");
@@ -703,11 +503,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
703
503
  // set another label value
704
504
  this.__label.setValue("456");
705
505
  this.assertEquals("456", this.__b1.getArray().getItem(0));
706
- this.assertEquals(
707
- "123",
708
- this.__b2.getArray().getItem(0),
709
- "binding still exists"
710
- );
506
+ this.assertEquals("123", this.__b2.getArray().getItem(0), "binding still exists");
711
507
  },
712
508
 
713
509
  testDeepTargetChangeMiddleArray() {
@@ -716,12 +512,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
716
512
  this.__a.setArray(array);
717
513
  oldArray.dispose();
718
514
 
719
- qx.data.SingleValueBinding.bind(
720
- this.__label,
721
- "value",
722
- this.__a,
723
- "array[0].lab.value"
724
- );
515
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "array[0].lab.value");
725
516
 
726
517
  this.__label.setValue("123");
727
518
  this.assertEquals("123", this.__b1.getLab().getValue());
@@ -740,12 +531,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
740
531
  this.__a.setArray(array);
741
532
  oldArray.dispose();
742
533
 
743
- qx.data.SingleValueBinding.bind(
744
- this.__label,
745
- "value",
746
- this.__a,
747
- "array[last].lab.value"
748
- );
534
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "array[last].lab.value");
749
535
 
750
536
  this.__label.setValue("123");
751
537
  this.assertEquals("123", this.__b1.getLab().getValue());
@@ -761,12 +547,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
761
547
  testDeepTargetChangeWithoutEvent() {
762
548
  this.__a.setChildWithout(this.__b1);
763
549
 
764
- qx.data.SingleValueBinding.bind(
765
- this.__label,
766
- "value",
767
- this.__a,
768
- "childWithout.name"
769
- );
550
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "childWithout.name");
770
551
 
771
552
  this.__label.setValue("123");
772
553
  this.assertEquals("123", this.__b1.getName());
@@ -784,12 +565,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
784
565
  this.__b1.setChildWithout(this.__b2);
785
566
  this.__b2.setChildWithout(this.__b1);
786
567
 
787
- qx.data.SingleValueBinding.bind(
788
- this.__label,
789
- "value",
790
- this.__a,
791
- "child.childWithout.name"
792
- );
568
+ qx.data.SingleValueBinding.bind(this.__label, "value", this.__a, "child.childWithout.name");
793
569
 
794
570
  this.__label.setValue("123");
795
571
  this.assertEquals("123", this.__b2.getName());
@@ -813,12 +589,7 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
813
589
 
814
590
  this.__a.setName(null);
815
591
 
816
- qx.data.SingleValueBinding.bind(
817
- this.__a,
818
- "name",
819
- this.__a,
820
- "child.child.name"
821
- );
592
+ qx.data.SingleValueBinding.bind(this.__a, "name", this.__a, "child.child.name");
822
593
 
823
594
  this.assertEquals(this.__a.getName(), this.__b2.getName());
824
595
 
@@ -856,6 +627,56 @@ qx.Class.define("qx.test.data.singlevalue.Deep", {
856
627
  this.error(e);
857
628
  this.assertTrue(false, e.message);
858
629
  }
630
+ },
631
+
632
+ testManualBidirectional() {
633
+ let Dummy = qx.Class.define("qx.test.data.singlevalue.Deep.Dummy", {
634
+ extend: qx.core.Object,
635
+ properties: {
636
+ value: {
637
+ init: null,
638
+ nullable: true,
639
+ event: "changeValue"
640
+ },
641
+ booleanProp: {
642
+ init: true,
643
+ check: "Boolean",
644
+ event: "changeBooleanProp"
645
+ }
646
+ }
647
+ });
648
+
649
+ let CheckBox = qx.Class.define("qx.test.data.singlevalue.Deep.CheckBox", {
650
+ extend: qx.core.Object,
651
+ properties: {
652
+ value: {
653
+ init: true,
654
+ check: "Boolean",
655
+ event: "changeValue"
656
+ }
657
+ }
658
+ });
659
+
660
+ let cbx = new CheckBox("Check me");
661
+ let ed = new Dummy();
662
+ let val = new Dummy();
663
+ ed.bind("value.booleanProp", cbx, "value", {
664
+ converter: value => !value
665
+ });
666
+ cbx.bind("value", ed, "value.booleanProp", {
667
+ converter: value => !value
668
+ });
669
+ ed.setValue(val);
670
+ this.assertTrue(val.getBooleanProp(), "Source value changed spuriously");
671
+ ed.setValue(null);
672
+ this.assertTrue(val.getBooleanProp(), "Source value changed spuriously (2)");
673
+ ed.setValue(val);
674
+ cbx.setValue(true);
675
+ this.assertFalse(val.getBooleanProp(), "Source value not updated from target");
676
+ cbx.setValue(false);
677
+ this.assertTrue(val.getBooleanProp(), "Source value not updated from target (2)");
678
+ val.setValue(true);
679
+ this.assertFalse(cbx.getValue(), "Target value not updated from source");
859
680
  }
860
681
  }
861
682
  });