(eval at (lively/morphic/TextCore.js?1306785499437:1278:48))\n at Text. (lively/morphic/TextCore.js?1306785499437:1278:55)\n at Text.boundEval (lively/morphic/TextCore.js?1306785499437:1279:32)\n at Text.tryBoundEval (lively/morphic/TextCore.js?1306785499437:1282:27)\n at Text.evalSelection (lively/morphic/TextCore.js?1306785499437:1265:27)\n at Text.doDoit (lively/morphic/TextCore.js?1306785499437:532:31)\n at Text.processCommandKeys (lively/morphic/TextCore.js?1306785499437:463:30)\n at Text.onKeyDown (lively/morphic/TextCore.js?1306785499437:359:31)\n at EventHandler.handleEvent (lively/morphic/Events.js?1306785499449:137:73)\n at HTMLDivElement.bound (lively/Base.js?1306785499250:218:22)","draggingEnabled":true,"_Scale":1,"renderContextTable":{"__isSmartRef__":true,"id":3039},"eventHandler":{"__isSmartRef__":true,"id":3040},"eventStartPos":{"__isSmartRef__":true,"id":3041},"__LivelyClassName__":"lively.morphic.World"},"1":{"submorphs":[],"scripts":[],"id":121,"shape":{"__isSmartRef__":true,"id":2},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":true,"allowsInput":true,"_FontFamily":"Arial, sans-serif","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":8},"_MaxTextWidth":666,"_MaxTextHeight":54,"textColor":{"__isSmartRef__":true,"id":9},"showsHalos":false,"_FontSize":14,"__SourceModuleName__":"Global.lively.morphic.TextCore","owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"padding":{"__isSmartRef__":true,"id":10},"layout":{"__isSmartRef__":true,"id":11},"_Padding":{"__isSmartRef__":true,"id":10},"textChunks":[{"__isSmartRef__":true,"id":12},{"__isSmartRef__":true,"id":14}],"charsReplaced":"save as","lastFindLoc":54,"_ClipMode":"auto","priorExtent":{"__isSmartRef__":true,"id":16},"renderContextTable":{"__isSmartRef__":true,"id":17},"eventHandler":{"__isSmartRef__":true,"id":18},"__LivelyClassName__":"lively.morphic.Text"},"2":{"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":3},"_Extent":{"__isSmartRef__":true,"id":4},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":5},"_Fill":{"__isSmartRef__":true,"id":6},"renderContextTable":{"__isSmartRef__":true,"id":7},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"3":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"4":{"x":666,"y":54,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"5":{"r":1,"g":1,"b":1,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"6":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"7":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"8":{"x":26,"y":156,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"9":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"10":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"11":{"resizeWidth":true,"resizeHeight":true},"12":{"style":{"__isSmartRef__":true,"id":13},"morph":{"__isSmartRef__":true,"id":1},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1},"storedString":"Welcome!","__LivelyClassName__":"lively.morphic.TextChunk"},"13":{"fontWeight":"bold","__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"14":{"style":{"__isSmartRef__":true,"id":15},"morph":{"__isSmartRef__":true,"id":1},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1},"storedString":"\nPlease store this world under a new name by hitting the button to the right.\n","__LivelyClassName__":"lively.morphic.TextChunk"},"15":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"16":{"x":666,"y":54,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"17":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"18":{"morph":{"__isSmartRef__":true,"id":1},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"19":{"submorphs":[{"__isSmartRef__":true,"id":20}],"scripts":[],"id":17,"shape":{"__isSmartRef__":true,"id":33},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":48},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":36},"lighterFill":{"__isSmartRef__":true,"id":49},"label":{"__isSmartRef__":true,"id":20},"owner":{"__isSmartRef__":true,"id":0},"attributeConnections":[{"__isSmartRef__":true,"id":58}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","_Rotation":0,"padding":{"__isSmartRef__":true,"id":59},"renderContextTable":{"__isSmartRef__":true,"id":60},"eventHandler":{"__isSmartRef__":true,"id":61},"__LivelyClassName__":"lively.morphic.Button"},"20":{"submorphs":[],"scripts":[],"id":18,"shape":{"__isSmartRef__":true,"id":21},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":26},"textColor":{"__isSmartRef__":true,"id":24},"owner":{"__isSmartRef__":true,"id":19},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","textChunks":[{"__isSmartRef__":true,"id":27}],"padding":{"__isSmartRef__":true,"id":29},"_Padding":{"__isSmartRef__":true,"id":29},"_ClipMode":"visible","priorExtent":{"__isSmartRef__":true,"id":30},"renderContextTable":{"__isSmartRef__":true,"id":31},"eventHandler":{"__isSmartRef__":true,"id":32},"__LivelyClassName__":"lively.morphic.Text"},"21":{"borderWidth":0,"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":22},"_Extent":{"__isSmartRef__":true,"id":23},"_BorderColor":{"__isSmartRef__":true,"id":24},"renderContextTable":{"__isSmartRef__":true,"id":25},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"22":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"23":{"x":116,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"24":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"25":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"26":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"27":{"style":{"__isSmartRef__":true,"id":28},"morph":{"__isSmartRef__":true,"id":20},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":20},"storedString":"save world as...","__LivelyClassName__":"lively.morphic.TextChunk"},"28":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"29":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"30":{"x":116,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"31":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"32":{"morph":{"__isSmartRef__":true,"id":20},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"33":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":34},"_Extent":{"__isSmartRef__":true,"id":35},"_Fill":{"__isSmartRef__":true,"id":36},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":46},"_BorderRadius":5,"renderContextTable":{"__isSmartRef__":true,"id":47},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"34":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"35":{"x":116,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"36":{"stops":[{"__isSmartRef__":true,"id":37},{"__isSmartRef__":true,"id":39},{"__isSmartRef__":true,"id":41},{"__isSmartRef__":true,"id":43}],"vector":{"__isSmartRef__":true,"id":45},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"37":{"offset":0,"color":{"__isSmartRef__":true,"id":38}},"38":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"39":{"offset":0.4,"color":{"__isSmartRef__":true,"id":40}},"40":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"41":{"offset":0.6,"color":{"__isSmartRef__":true,"id":42}},"42":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"43":{"offset":1,"color":{"__isSmartRef__":true,"id":44}},"44":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"45":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"46":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"47":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"48":{"x":705,"y":181,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"49":{"stops":[{"__isSmartRef__":true,"id":50},{"__isSmartRef__":true,"id":52},{"__isSmartRef__":true,"id":54},{"__isSmartRef__":true,"id":56}],"vector":{"__isSmartRef__":true,"id":45},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"50":{"offset":0,"color":{"__isSmartRef__":true,"id":51}},"51":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"52":{"offset":0.4,"color":{"__isSmartRef__":true,"id":53}},"53":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"54":{"offset":0.6,"color":{"__isSmartRef__":true,"id":55}},"55":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"56":{"offset":1,"color":{"__isSmartRef__":true,"id":57}},"57":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"58":{"sourceObj":{"__isSmartRef__":true,"id":19},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":0},"targetMethodName":"interactiveSaveWorldAs","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"59":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"60":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"61":{"morph":{"__isSmartRef__":true,"id":19},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"62":{"submorphs":[],"scripts":[],"id":257,"shape":{"__isSmartRef__":true,"id":63},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":false,"allowsInput":true,"_FontFamily":"Helvetica","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":68},"_MaxTextWidth":718,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":69},"showsHalos":false,"_FontSize":25,"__SourceModuleName__":"Global.lively.morphic.TextCore","name":"Title","partsBinMetaInfo":{"__isSmartRef__":true,"id":70},"_TextColor":{"__isSmartRef__":true,"id":71},"owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"textChunks":[{"__isSmartRef__":true,"id":72}],"charsReplaced":"Use this page as a template for your own worlds","lastFindLoc":-47,"_ClipMode":"visible","priorExtent":{"__isSmartRef__":true,"id":74},"renderContextTable":{"__isSmartRef__":true,"id":75},"eventHandler":{"__isSmartRef__":true,"id":76},"priorSelectionRange":[31,31],"__LivelyClassName__":"lively.morphic.Text"},"63":{"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":64},"_Extent":{"__isSmartRef__":true,"id":65},"_BorderWidth":2,"_BorderColor":{"__isSmartRef__":true,"id":66},"renderContextTable":{"__isSmartRef__":true,"id":67},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"64":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"65":{"x":718,"y":39,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"66":{"r":1,"g":1,"b":1,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"67":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"68":{"x":23,"y":28,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"69":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"70":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"71":{"r":0,"g":0.309,"b":0.595,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"72":{"style":{"__isSmartRef__":true,"id":73},"morph":{"__isSmartRef__":true,"id":62},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":62},"storedString":"Getting familiar with Morphic tests","__LivelyClassName__":"lively.morphic.TextChunk"},"73":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"74":{"x":718,"y":39,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"75":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"76":{"morph":{"__isSmartRef__":true,"id":62},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"77":{"submorphs":[{"__isSmartRef__":true,"id":78},{"__isSmartRef__":true,"id":92}],"scripts":[],"id":75,"shape":{"__isSmartRef__":true,"id":104},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":110},"showsHalos":false,"name":"Rectangle1","partsBinMetaInfo":{"__isSmartRef__":true,"id":111},"__SourceModuleName__":"Global.lively.morphic.Core","_Rotation":0,"_Scale":1.002003004005006,"renderContextTable":{"__isSmartRef__":true,"id":112},"eventHandler":{"__isSmartRef__":true,"id":113},"owner":{"__isSmartRef__":true,"id":0},"layout":{"__isSmartRef__":true,"id":114},"priorExtent":{"__isSmartRef__":true,"id":116},"__LivelyClassName__":"lively.morphic.Box"},"78":{"submorphs":[],"scripts":[],"id":1003,"shape":{"__isSmartRef__":true,"id":79},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":false,"allowsInput":true,"_OverflowMode":"visible","_FontFamily":"Arial, sans-serif","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":84},"_MaxTextWidth":289.3785677569462,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":82},"showsHalos":false,"_FontSize":14,"__SourceModuleName__":"Global.lively.morphic.TextCore","_Rotation":0,"name":"Text2","partsBinMetaInfo":{"__isSmartRef__":true,"id":85},"textChunks":[{"__isSmartRef__":true,"id":86}],"charsReplaced":"","lastFindLoc":13,"priorSelectionRange":[9,9],"prevScroll":[0,0],"_Scale":1,"priorExtent":{"__isSmartRef__":true,"id":88},"renderContextTable":{"__isSmartRef__":true,"id":89},"eventHandler":{"__isSmartRef__":true,"id":90},"owner":{"__isSmartRef__":true,"id":77},"layout":{"__isSmartRef__":true,"id":91},"__LivelyClassName__":"lively.morphic.Text"},"79":{"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":80},"_Extent":{"__isSmartRef__":true,"id":81},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":82},"renderContextTable":{"__isSmartRef__":true,"id":83},"_BorderRadius":0,"_Opacity":1,"_BorderStyle":"solid","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"80":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"81":{"x":289.3785677569462,"y":23,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"82":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"83":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"84":{"x":10,"y":10,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"85":{"partsSpaceName":"PartsBin/Basic","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"86":{"style":{"__isSmartRef__":true,"id":87},"morph":{"__isSmartRef__":true,"id":78},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":78},"storedString":"some text","__LivelyClassName__":"lively.morphic.TextChunk"},"87":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"88":{"x":289.3785677569462,"y":23,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"89":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"90":{"morph":{"__isSmartRef__":true,"id":78},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"91":{"resizeWidth":true},"92":{"submorphs":[],"scripts":[],"id":1226,"shape":{"__isSmartRef__":true,"id":93},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":99},"showsHalos":false,"name":"Rectangle2","partsBinMetaInfo":{"__isSmartRef__":true,"id":100},"__SourceModuleName__":"Global.lively.morphic.Core","_Rotation":0,"_Scale":1,"renderContextTable":{"__isSmartRef__":true,"id":101},"eventHandler":{"__isSmartRef__":true,"id":102},"owner":{"__isSmartRef__":true,"id":77},"priorExtent":{"__isSmartRef__":true,"id":103},"__LivelyClassName__":"lively.morphic.Box"},"93":{"position":{"__isSmartRef__":true,"id":94},"_Extent":{"__isSmartRef__":true,"id":95},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":96},"_Fill":{"__isSmartRef__":true,"id":97},"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":98},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"94":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"95":{"x":100,"y":100,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"96":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"97":{"r":0,"g":0,"b":0.8,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"98":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"99":{"x":10,"y":48,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"100":{"partsSpaceName":"PartsBin/Basic","__SourceModuleName__":"Global.lively.PartsBin","comment":"A simple box morph","migrationLevel":2,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"101":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"102":{"morph":{"__isSmartRef__":true,"id":92},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"103":{"x":100,"y":100,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"104":{"position":{"__isSmartRef__":true,"id":105},"_Extent":{"__isSmartRef__":true,"id":106},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":107},"_Fill":{"__isSmartRef__":true,"id":108},"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":109},"_BorderRadius":0,"_Opacity":1,"_BorderStyle":"solid","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"105":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"106":{"x":309.3785677569462,"y":158,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"107":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"108":{"r":0.753,"g":0.753,"b":0.753,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"109":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"110":{"x":269.53880807734663,"y":314.6289432575719,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"111":{"partsSpaceName":"PartsBin/Basic","__SourceModuleName__":"Global.lively.PartsBin","comment":"A simple box morph","migrationLevel":2,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"112":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"113":{"morph":{"__isSmartRef__":true,"id":77},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"114":{"layouter":{"__isSmartRef__":true,"id":115}},"115":{"__SourceModuleName__":"Global.lively.morphic.Layout","__LivelyClassName__":"lively.morphic.Layout.JournalLayout"},"116":{"x":309.3785677569462,"y":181,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"117":{"submorphs":[{"__isSmartRef__":true,"id":118},{"__isSmartRef__":true,"id":160},{"__isSmartRef__":true,"id":174}],"scripts":[],"id":1477,"shape":{"__isSmartRef__":true,"id":187},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":193},"showsHalos":false,"name":"TestRunPane","_Rotation":0,"__SourceModuleName__":"Global.lively.morphic.Core","partsBinMetaInfo":{"__isSmartRef__":true,"id":194},"_Scale":1.002003004005006,"renderContextTable":{"__isSmartRef__":true,"id":195},"eventHandler":{"__isSmartRef__":true,"id":196},"owner":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":197},"__LivelyClassName__":"lively.morphic.Box"},"118":{"submorphs":[{"__isSmartRef__":true,"id":119}],"scripts":[],"id":1478,"shape":{"__isSmartRef__":true,"id":132},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":147},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":135},"lighterFill":{"__isSmartRef__":true,"id":148},"label":{"__isSmartRef__":true,"id":119},"owner":{"__isSmartRef__":true,"id":117},"_Rotation":0,"showsHalos":false,"name":"runButton","attributeConnections":[{"__isSmartRef__":true,"id":157}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","renderContextTable":{"__isSmartRef__":true,"id":158},"eventHandler":{"__isSmartRef__":true,"id":159},"__LivelyClassName__":"lively.morphic.Button"},"119":{"submorphs":[],"scripts":[],"id":1479,"shape":{"__isSmartRef__":true,"id":120},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_FontFamily":"Helvetica","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":125},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":123},"padding":{"__isSmartRef__":true,"id":126},"_Padding":{"__isSmartRef__":true,"id":126},"owner":{"__isSmartRef__":true,"id":118},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","_ClipMode":"visible","textChunks":[{"__isSmartRef__":true,"id":127}],"priorExtent":{"__isSmartRef__":true,"id":129},"renderContextTable":{"__isSmartRef__":true,"id":130},"eventHandler":{"__isSmartRef__":true,"id":131},"__LivelyClassName__":"lively.morphic.Text"},"120":{"borderWidth":0,"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":121},"_Extent":{"__isSmartRef__":true,"id":122},"_BorderColor":{"__isSmartRef__":true,"id":123},"renderContextTable":{"__isSmartRef__":true,"id":124},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"121":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"122":{"x":57,"y":29,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"123":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"124":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"125":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"126":{"x":5,"y":5,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"127":{"style":{"__isSmartRef__":true,"id":128},"morph":{"__isSmartRef__":true,"id":119},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":119},"storedString":"run","__LivelyClassName__":"lively.morphic.TextChunk"},"128":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"129":{"x":57,"y":29,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"130":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"131":{"morph":{"__isSmartRef__":true,"id":119},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"132":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":133},"_Extent":{"__isSmartRef__":true,"id":134},"_Fill":{"__isSmartRef__":true,"id":135},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":145},"_BorderRadius":5,"renderContextTable":{"__isSmartRef__":true,"id":146},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"133":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"134":{"x":57,"y":29,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"135":{"stops":[{"__isSmartRef__":true,"id":136},{"__isSmartRef__":true,"id":138},{"__isSmartRef__":true,"id":140},{"__isSmartRef__":true,"id":142}],"vector":{"__isSmartRef__":true,"id":144},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"136":{"offset":0,"color":{"__isSmartRef__":true,"id":137}},"137":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"138":{"offset":0.4,"color":{"__isSmartRef__":true,"id":139}},"139":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"140":{"offset":0.6,"color":{"__isSmartRef__":true,"id":141}},"141":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"142":{"offset":1,"color":{"__isSmartRef__":true,"id":143}},"143":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"144":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"145":{"r":0.4,"g":0.4,"b":0.4,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"146":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"147":{"x":10,"y":10,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"148":{"stops":[{"__isSmartRef__":true,"id":149},{"__isSmartRef__":true,"id":151},{"__isSmartRef__":true,"id":153},{"__isSmartRef__":true,"id":155}],"vector":{"__isSmartRef__":true,"id":144},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"149":{"offset":0,"color":{"__isSmartRef__":true,"id":150}},"150":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"151":{"offset":0.4,"color":{"__isSmartRef__":true,"id":152}},"152":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"153":{"offset":0.6,"color":{"__isSmartRef__":true,"id":154}},"154":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"155":{"offset":1,"color":{"__isSmartRef__":true,"id":156}},"156":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"157":{"sourceObj":{"__isSmartRef__":true,"id":118},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":117},"targetMethodName":"runTest","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"158":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"159":{"morph":{"__isSmartRef__":true,"id":118},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"160":{"submorphs":[],"scripts":[],"id":1480,"shape":{"__isSmartRef__":true,"id":161},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":true,"allowsInput":true,"_FontFamily":"Monaco","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":166},"_MaxTextWidth":449,"_MaxTextHeight":163,"textColor":{"__isSmartRef__":true,"id":123},"owner":{"__isSmartRef__":true,"id":117},"showsHalos":false,"name":"testResult","__SourceModuleName__":"Global.lively.morphic.TextCore","padding":{"__isSmartRef__":true,"id":167},"layout":{"__isSmartRef__":true,"id":168},"_FontSize":10,"_Padding":{"__isSmartRef__":true,"id":167},"_ClipMode":"scroll","textChunks":[{"__isSmartRef__":true,"id":169}],"priorExtent":{"__isSmartRef__":true,"id":171},"priorSelectionRange":[10,10],"renderContextTable":{"__isSmartRef__":true,"id":172},"eventHandler":{"__isSmartRef__":true,"id":173},"__LivelyClassName__":"lively.morphic.Text"},"161":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":162},"_Extent":{"__isSmartRef__":true,"id":163},"_Fill":{"__isSmartRef__":true,"id":164},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":123},"renderContextTable":{"__isSmartRef__":true,"id":165},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"162":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"163":{"x":449,"y":163,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"164":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"165":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"166":{"x":11,"y":48,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"167":{"x":5,"y":5,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"168":{"resizeWidth":true,"resizeHeight":true},"169":{"style":{"__isSmartRef__":true,"id":170},"morph":{"__isSmartRef__":true,"id":160},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":160},"storedString":"running...","__LivelyClassName__":"lively.morphic.TextChunk"},"170":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"171":{"x":449,"y":163,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"172":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"173":{"morph":{"__isSmartRef__":true,"id":160},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"174":{"submorphs":[],"scripts":[],"id":1481,"shape":{"__isSmartRef__":true,"id":175},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":false,"allowsInput":true,"_FontFamily":"Helvetica","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":181},"_MaxTextWidth":366,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":179},"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.TextCore","owner":{"__isSmartRef__":true,"id":117},"_Rotation":0,"name":"testModuleNS","charsReplaced":"Global","lastFindLoc":-4,"_ClipMode":"visible","textChunks":[{"__isSmartRef__":true,"id":182}],"priorExtent":{"__isSmartRef__":true,"id":184},"priorSelectionRange":[34,34],"renderContextTable":{"__isSmartRef__":true,"id":185},"eventHandler":{"__isSmartRef__":true,"id":186},"__LivelyClassName__":"lively.morphic.Text"},"175":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":176},"_Extent":{"__isSmartRef__":true,"id":177},"_Fill":{"__isSmartRef__":true,"id":178},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":179},"renderContextTable":{"__isSmartRef__":true,"id":180},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"176":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"177":{"x":366,"y":19,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"178":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"179":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"180":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"181":{"x":102,"y":12,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"182":{"style":{"__isSmartRef__":true,"id":183},"morph":{"__isSmartRef__":true,"id":174},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":174},"storedString":"['lively.morphic.Tests.MenuTests']","__LivelyClassName__":"lively.morphic.TextChunk"},"183":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"184":{"x":366,"y":19,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"185":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"186":{"morph":{"__isSmartRef__":true,"id":174},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"187":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":188},"_Extent":{"__isSmartRef__":true,"id":189},"_Fill":{"__isSmartRef__":true,"id":190},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":191},"renderContextTable":{"__isSmartRef__":true,"id":192},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"188":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"189":{"x":479,"y":225,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"190":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"191":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"192":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"193":{"x":120.24036048060073,"y":602.2038054070086,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"194":{"partsSpaceName":"PartsBin/Testing/","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":2,"comment":"Specify a namespace and run all the TestCase classes defined in it.","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"195":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"196":{"morph":{"__isSmartRef__":true,"id":117},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"197":{"runTest":{"__isSmartRef__":true,"id":198}},"198":{"varMapping":{"__isSmartRef__":true,"id":199},"source":"function runTest() {\n\nmodule('lively.TestFramework').load(true);\n\nvar moduleNames = eval(this.get('testModuleNS').textString),\n\tmodules = moduleNames.collect(function(name) { return module(name) }),\n\tresultText = this.get('testResult'),\n\tstartTime = new Date(),\n\tsuite = new TestSuite();\n\n\tresultText.setFill(Color.white);\n\tresultText.setTextString('running...');\n\nmodules.forEach(function(m) {\n\tif (!m.isLoaded()) m.load(true);\n\tsuite.testCasesFromModule(m);\n});\nvar noOfTestCases = suite.testCaseClasses.inject(0, function(sum, testClass) {\n\treturn sum + new testClass().allTestSelectors().length\n});\nsuite.runFinished = function() {\n\tGlobal.testResult = suite.result\n\tif (suite.result.failed.length == 0) {\n\t\tvar time = new Date() - startTime;\n\t\tresultText.setFill(Color.green);\n\t\tresultText.setTextString(time.toString() + 'ms for ' + noOfTestCases + ' tests');\n\t\treturn;\n\t}\n\tvar failStr = suite.result.failed.collect(function(result) {\n\t\tvar msg = result.classname + '>>' + result.selector;\n\t\tmsg += '\\n' + result.err.message;\n\t\tmsg += '\\n' + result.err.stack;\n\t\treturn msg;\n\t}).join('\\n---------\\n');\n\tresultText.setFill(Color.red);\n\tresultText.setTextString(failStr);\n} /* runFinished */\nsuite.runAll();\n\n}","funcProperties":{"__isSmartRef__":true,"id":200},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"199":{"this":{"__isSmartRef__":true,"id":117}},"200":{},"201":{"submorphs":[{"__isSmartRef__":true,"id":202},{"__isSmartRef__":true,"id":792},{"__isSmartRef__":true,"id":932}],"scripts":[],"id":1405,"shape":{"__isSmartRef__":true,"id":966},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"layout":{"__isSmartRef__":true,"id":969},"_Position":{"__isSmartRef__":true,"id":970},"priorExtent":{"__isSmartRef__":true,"id":971},"targetMorph":{"__isSmartRef__":true,"id":202},"titleBar":{"__isSmartRef__":true,"id":792},"contentOffset":{"__isSmartRef__":true,"id":680},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"highlighted":true,"_Rotation":0,"_Scale":1,"prevDragPos":{"__isSmartRef__":true,"id":972},"showsHalos":false,"partsBinMetaInfo":{"__isSmartRef__":true,"id":973},"name":"PartsBinBrowser","__SourceModuleName__":"Global.lively.morphic.Widgets","renderContextTable":{"__isSmartRef__":true,"id":974},"eventHandler":{"__isSmartRef__":true,"id":975},"owner":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":976},"__LivelyClassName__":"lively.morphic.Window"},"202":{"submorphs":[{"__isSmartRef__":true,"id":203},{"__isSmartRef__":true,"id":216},{"__isSmartRef__":true,"id":230},{"__isSmartRef__":true,"id":275},{"__isSmartRef__":true,"id":406},{"__isSmartRef__":true,"id":419},{"__isSmartRef__":true,"id":466},{"__isSmartRef__":true,"id":342},{"__isSmartRef__":true,"id":513},{"__isSmartRef__":true,"id":528},{"__isSmartRef__":true,"id":578},{"__isSmartRef__":true,"id":624}],"scripts":[],"id":1406,"shape":{"__isSmartRef__":true,"id":674},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":680},"showsHalos":false,"name":"PartsBinBrowser","partsBinMetaInfo":{"__isSmartRef__":true,"id":681},"__SourceModuleName__":"Global.lively.morphic.Core","_Rotation":0,"_Scale":1,"attributeConnections":[{"__isSmartRef__":true,"id":682}],"doNotSerialize":["$$categoryName"],"doNotCopyProperties":["$$categoryName"],"selectedPartItem":{"__isSmartRef__":true,"id":340},"layout":{"__isSmartRef__":true,"id":683},"priorExtent":{"__isSmartRef__":true,"id":684},"categoryName":"Testing","owner":{"__isSmartRef__":true,"id":201},"renderContextTable":{"__isSmartRef__":true,"id":685},"eventHandler":{"__isSmartRef__":true,"id":686},"categories":{"__isSmartRef__":true,"id":687},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":709},"__LivelyClassName__":"lively.morphic.Box"},"203":{"submorphs":[],"scripts":[],"id":1407,"shape":{"__isSmartRef__":true,"id":204},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":false,"allowsInput":true,"_FontFamily":"Arial, sans-serif","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":209},"_MaxTextWidth":82,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":207},"showsHalos":false,"_FontSize":12,"__SourceModuleName__":"Global.lively.morphic.TextCore","_Rotation":0,"name":"Text","partsBinMetaInfo":{"__isSmartRef__":true,"id":210},"textChunks":[{"__isSmartRef__":true,"id":211}],"charsReplaced":"some text","lastFindLoc":-9,"priorSelectionRange":[0,8],"prevScroll":[0,0],"_Scale":1,"owner":{"__isSmartRef__":true,"id":202},"_ClipMode":"visible","priorExtent":{"__isSmartRef__":true,"id":213},"renderContextTable":{"__isSmartRef__":true,"id":214},"eventHandler":{"__isSmartRef__":true,"id":215},"__LivelyClassName__":"lively.morphic.Text"},"204":{"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":205},"_Extent":{"__isSmartRef__":true,"id":206},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":207},"renderContextTable":{"__isSmartRef__":true,"id":208},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"205":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"206":{"x":82,"y":18,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"207":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"208":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"209":{"x":8,"y":9,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"210":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"211":{"style":{"__isSmartRef__":true,"id":212},"morph":{"__isSmartRef__":true,"id":203},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":203},"storedString":"PartsBin","__LivelyClassName__":"lively.morphic.TextChunk"},"212":{"__SourceModuleName__":"Global.lively.morphic.TextCore","fontWeight":"bold","__LivelyClassName__":"lively.morphic.TextEmphasis"},"213":{"x":82,"y":18,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"214":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"215":{"morph":{"__isSmartRef__":true,"id":203},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"216":{"submorphs":[],"scripts":[],"id":1408,"shape":{"__isSmartRef__":true,"id":217},"droppingEnabled":true,"halosEnabled":true,"_Position":{"__isSmartRef__":true,"id":223},"itemList":["Basic","Database","Debugging","Demos","Documentation","DroppableBehaviors","Examples","Forms","Fun","Inputs","Layout","NewWorld","Presenting","Server","Testing","Text support","Tools","uncategorized","Visualization","Widgets","Wiki","Worlds"],"showsHalos":false,"name":"categoryList","partsBinMetaInfo":{"__isSmartRef__":true,"id":224},"__SourceModuleName__":"Global.lively.morphic.Core","owner":{"__isSmartRef__":true,"id":202},"_Rotation":0,"_Scale":1,"_ClipMode":"auto","prevScroll":[0,0],"attributeConnections":[{"__isSmartRef__":true,"id":225}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"priorExtent":{"__isSmartRef__":true,"id":226},"layout":{"__isSmartRef__":true,"id":227},"selection":"Testing","selectedLineNo":14,"renderContextTable":{"__isSmartRef__":true,"id":228},"eventHandler":{"__isSmartRef__":true,"id":229},"__LivelyClassName__":"lively.morphic.List"},"217":{"position":{"__isSmartRef__":true,"id":218},"_Extent":{"__isSmartRef__":true,"id":219},"_BorderWidth":1.258,"_BorderColor":{"__isSmartRef__":true,"id":220},"_Fill":{"__isSmartRef__":true,"id":221},"__SourceModuleName__":"Global.lively.morphic.Shapes","_BorderRadius":0,"renderContextTable":{"__isSmartRef__":true,"id":222},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"218":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"219":{"x":144.0100150200251,"y":407.002003004005,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"220":{"r":0.8280587561201496,"g":0.8280587561201496,"b":0.8280587561201496,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"221":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"222":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"223":{"x":9,"y":37,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"224":{"partsSpaceName":"PartsBin/NewWorld","migrationLevel":1,"__SourceModuleName__":"Global.lively.PartsBin","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"225":{"sourceObj":{"__isSmartRef__":true,"id":216},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"categoryName","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"226":{"x":144.0100150200251,"y":408.002003004005,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"227":{"resizeHeight":true},"228":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"229":{"morph":{"__isSmartRef__":true,"id":216},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"230":{"submorphs":[{"__isSmartRef__":true,"id":231}],"scripts":[],"id":1409,"shape":{"__isSmartRef__":true,"id":245},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":260},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":248},"lighterFill":{"__isSmartRef__":true,"id":261},"label":{"__isSmartRef__":true,"id":231},"attributeConnections":[{"__isSmartRef__":true,"id":270}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","_Rotation":0,"padding":{"__isSmartRef__":true,"id":271},"name":"reloadButton","partsBinMetaInfo":{"__isSmartRef__":true,"id":272},"owner":{"__isSmartRef__":true,"id":202},"_Scale":1,"renderContextTable":{"__isSmartRef__":true,"id":273},"eventHandler":{"__isSmartRef__":true,"id":274},"__LivelyClassName__":"lively.morphic.Button"},"231":{"submorphs":[],"scripts":[],"id":1410,"shape":{"__isSmartRef__":true,"id":232},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":66,"_MaxTextHeight":21,"fixedHeight":true,"allowsInput":false,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":237},"textColor":{"__isSmartRef__":true,"id":235},"owner":{"__isSmartRef__":true,"id":230},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","textChunks":[{"__isSmartRef__":true,"id":238}],"padding":{"__isSmartRef__":true,"id":240},"_Padding":{"__isSmartRef__":true,"id":241},"prevScroll":[0,0],"_Align":"center","_FontFamily":"Arial","_ClipMode":"visible","_WhiteSpaceHandling":"pre-wrap","_VerticalAlign":"middle","_Display":"table-cell","priorExtent":{"__isSmartRef__":true,"id":242},"renderContextTable":{"__isSmartRef__":true,"id":243},"eventHandler":{"__isSmartRef__":true,"id":244},"__LivelyClassName__":"lively.morphic.Text"},"232":{"borderWidth":0,"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":233},"_Extent":{"__isSmartRef__":true,"id":234},"_BorderColor":{"__isSmartRef__":true,"id":235},"renderContextTable":{"__isSmartRef__":true,"id":236},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"233":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"234":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"235":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"236":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"237":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"238":{"style":{"__isSmartRef__":true,"id":239},"morph":{"__isSmartRef__":true,"id":231},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":231},"storedString":"refresh","__LivelyClassName__":"lively.morphic.TextChunk"},"239":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"240":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"241":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"242":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"243":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"244":{"morph":{"__isSmartRef__":true,"id":231},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"245":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":246},"_Extent":{"__isSmartRef__":true,"id":247},"_Fill":{"__isSmartRef__":true,"id":248},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":258},"_BorderRadius":5,"renderContextTable":{"__isSmartRef__":true,"id":259},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"246":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"247":{"x":66,"y":21,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"248":{"stops":[{"__isSmartRef__":true,"id":249},{"__isSmartRef__":true,"id":251},{"__isSmartRef__":true,"id":253},{"__isSmartRef__":true,"id":255}],"vector":{"__isSmartRef__":true,"id":257},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"249":{"offset":0,"color":{"__isSmartRef__":true,"id":250}},"250":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"251":{"offset":0.4,"color":{"__isSmartRef__":true,"id":252}},"252":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"253":{"offset":0.6,"color":{"__isSmartRef__":true,"id":254}},"254":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"255":{"offset":1,"color":{"__isSmartRef__":true,"id":256}},"256":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"257":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"258":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"259":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"260":{"x":152,"y":10,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"261":{"stops":[{"__isSmartRef__":true,"id":262},{"__isSmartRef__":true,"id":264},{"__isSmartRef__":true,"id":266},{"__isSmartRef__":true,"id":268}],"vector":{"__isSmartRef__":true,"id":257},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"262":{"offset":0,"color":{"__isSmartRef__":true,"id":263}},"263":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"264":{"offset":0.4,"color":{"__isSmartRef__":true,"id":265}},"265":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"266":{"offset":0.6,"color":{"__isSmartRef__":true,"id":267}},"267":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"268":{"offset":1,"color":{"__isSmartRef__":true,"id":269}},"269":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"270":{"sourceObj":{"__isSmartRef__":true,"id":230},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"reloadEverything","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"271":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"272":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"273":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"274":{"morph":{"__isSmartRef__":true,"id":230},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"275":{"submorphs":[{"__isSmartRef__":true,"id":276},{"__isSmartRef__":true,"id":309}],"scripts":[],"id":1411,"shape":{"__isSmartRef__":true,"id":380},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":385},"showsHalos":false,"name":"partsBinContents","partsBinMetaInfo":{"__isSmartRef__":true,"id":386},"__SourceModuleName__":"Global.lively.morphic.Core","_Rotation":0,"_Scale":1,"_ClipMode":"scroll","owner":{"__isSmartRef__":true,"id":202},"priorExtent":{"__isSmartRef__":true,"id":387},"attributeConnections":[{"__isSmartRef__":true,"id":388}],"doNotSerialize":["$$selectedItem"],"doNotCopyProperties":["$$selectedItem"],"isClip":true,"layout":{"__isSmartRef__":true,"id":389},"selectedItem":{"__isSmartRef__":true,"id":340},"renderContextTable":{"__isSmartRef__":true,"id":390},"eventHandler":{"__isSmartRef__":true,"id":391},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":392},"__LivelyClassName__":"lively.morphic.Box"},"276":{"submorphs":[{"__isSmartRef__":true,"id":277},{"__isSmartRef__":true,"id":285}],"scripts":[],"id":1470,"renderContextTable":{"__isSmartRef__":true,"id":299},"shape":{"__isSmartRef__":true,"id":300},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":305},"_Position":{"__isSmartRef__":true,"id":306},"partsBinURL":{"__isSmartRef__":true,"id":307},"targetName":"TestClassRunner","partItem":{"__isSmartRef__":true,"id":308},"owner":{"__isSmartRef__":true,"id":275},"isSelected":false,"__SourceModuleName__":"Global.lively.morphic.ScriptingSupport","__LivelyClassName__":"lively.morphic.PartsBinItem"},"277":{"submorphs":[],"scripts":[],"id":1471,"renderContextTable":{"__isSmartRef__":true,"id":278},"shape":{"__isSmartRef__":true,"id":279},"droppingEnabled":true,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":283},"_Position":{"__isSmartRef__":true,"id":284},"eventsAreIgnored":true,"_HandStyle":"default","owner":{"__isSmartRef__":true,"id":276},"priorExtent":{"__isSmartRef__":true,"id":282},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Image"},"278":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"279":{"_Position":{"__isSmartRef__":true,"id":280},"renderContextTable":{"__isSmartRef__":true,"id":281},"_Extent":{"__isSmartRef__":true,"id":282},"_ImageURL":"http://lively-kernel.org/repository/webwerkstatt/PartsBin/Testing/TestClassRunner.svg?time=1306694646271","attributeConnections":[],"doNotSerialize":[],"doNotCopyProperties":[],"_Fill":null,"isLoaded":true,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Image"},"280":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"281":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML","setImageURL":"setImageURLHTML","getNativeExtent":"getNativeExtentHTML"},"282":{"x":94,"y":94,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"283":{"morph":{"__isSmartRef__":true,"id":277},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"284":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"285":{"submorphs":[],"scripts":[],"id":1472,"renderContextTable":{"__isSmartRef__":true,"id":286},"textChunks":[{"__isSmartRef__":true,"id":287}],"shape":{"__isSmartRef__":true,"id":289},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":295},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":296},"_Position":{"__isSmartRef__":true,"id":297},"priorExtent":{"__isSmartRef__":true,"id":298},"_MaxTextWidth":80,"_MaxTextHeight":20,"evalEnabled":false,"isLabel":true,"_HandStyle":"default","_FontSize":8,"_Align":"center","eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":276},"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"286":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"287":{"style":{"__isSmartRef__":true,"id":288},"morph":{"__isSmartRef__":true,"id":285},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":285},"storedString":"TestClassRunner","__LivelyClassName__":"lively.morphic.TextChunk"},"288":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"289":{"_Position":{"__isSmartRef__":true,"id":290},"renderContextTable":{"__isSmartRef__":true,"id":291},"_Extent":{"__isSmartRef__":true,"id":292},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":{"__isSmartRef__":true,"id":294},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"290":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"291":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"292":{"x":80,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"293":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"294":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"295":{"x":2,"y":1,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"296":{"morph":{"__isSmartRef__":true,"id":285},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"297":{"x":10,"y":10,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"298":{"x":80,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"299":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"300":{"_Position":{"__isSmartRef__":true,"id":301},"renderContextTable":{"__isSmartRef__":true,"id":302},"_Extent":{"__isSmartRef__":true,"id":303},"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":{"__isSmartRef__":true,"id":304},"_BorderRadius":6,"_BorderWidth":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"301":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"302":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"303":{"x":100,"y":100,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"304":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"305":{"morph":{"__isSmartRef__":true,"id":276},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"306":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"307":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Testing/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"308":{"partsSpaceName":"PartsBin/Testing/","name":"TestClassRunner","part":null,"json":null,"__SourceModuleName__":"Global.lively.PartsBin","__LivelyClassName__":"lively.PartsBin.PartItem"},"309":{"submorphs":[{"__isSmartRef__":true,"id":310},{"__isSmartRef__":true,"id":318}],"scripts":[],"id":1473,"renderContextTable":{"__isSmartRef__":true,"id":330},"shape":{"__isSmartRef__":true,"id":331},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":337},"_Position":{"__isSmartRef__":true,"id":338},"partsBinURL":{"__isSmartRef__":true,"id":339},"targetName":"TestRunPane","partItem":{"__isSmartRef__":true,"id":340},"owner":{"__isSmartRef__":true,"id":275},"isSelected":true,"__SourceModuleName__":"Global.lively.morphic.ScriptingSupport","__LivelyClassName__":"lively.morphic.PartsBinItem"},"310":{"submorphs":[],"scripts":[],"id":1474,"renderContextTable":{"__isSmartRef__":true,"id":311},"shape":{"__isSmartRef__":true,"id":312},"droppingEnabled":true,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":316},"_Position":{"__isSmartRef__":true,"id":317},"eventsAreIgnored":true,"_HandStyle":"default","owner":{"__isSmartRef__":true,"id":309},"priorExtent":{"__isSmartRef__":true,"id":315},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Image"},"311":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"312":{"_Position":{"__isSmartRef__":true,"id":313},"renderContextTable":{"__isSmartRef__":true,"id":314},"_Extent":{"__isSmartRef__":true,"id":315},"_ImageURL":"http://lively-kernel.org/repository/webwerkstatt/PartsBin/Testing/TestRunPane.svg?time=1306694646294","attributeConnections":[],"doNotSerialize":[],"doNotCopyProperties":[],"_Fill":null,"isLoaded":true,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Image"},"313":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"314":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML","setImageURL":"setImageURLHTML","getNativeExtent":"getNativeExtentHTML"},"315":{"x":94,"y":94,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"316":{"morph":{"__isSmartRef__":true,"id":310},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"317":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"318":{"submorphs":[],"scripts":[],"id":1475,"renderContextTable":{"__isSmartRef__":true,"id":319},"textChunks":[{"__isSmartRef__":true,"id":320}],"shape":{"__isSmartRef__":true,"id":322},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":295},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":327},"_Position":{"__isSmartRef__":true,"id":328},"priorExtent":{"__isSmartRef__":true,"id":329},"_MaxTextWidth":80,"_MaxTextHeight":20,"evalEnabled":false,"isLabel":true,"_HandStyle":"default","_FontSize":8,"_Align":"center","eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":309},"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"319":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"320":{"style":{"__isSmartRef__":true,"id":321},"morph":{"__isSmartRef__":true,"id":318},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":318},"storedString":"TestRunPane","__LivelyClassName__":"lively.morphic.TextChunk"},"321":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"322":{"_Position":{"__isSmartRef__":true,"id":323},"renderContextTable":{"__isSmartRef__":true,"id":324},"_Extent":{"__isSmartRef__":true,"id":325},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":{"__isSmartRef__":true,"id":326},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"323":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"324":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"325":{"x":80,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"326":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"327":{"morph":{"__isSmartRef__":true,"id":318},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"328":{"x":10,"y":10,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"329":{"x":80,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"330":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"331":{"_Position":{"__isSmartRef__":true,"id":332},"renderContextTable":{"__isSmartRef__":true,"id":333},"_Extent":{"__isSmartRef__":true,"id":334},"_BorderColor":{"__isSmartRef__":true,"id":335},"_Fill":{"__isSmartRef__":true,"id":336},"_BorderRadius":6,"_BorderWidth":3,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"332":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"333":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"334":{"x":100,"y":100,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"335":{"r":0.8,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"336":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"337":{"morph":{"__isSmartRef__":true,"id":309},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"338":{"x":100,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"339":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Testing/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"340":{"partsSpaceName":"PartsBin/Testing/","name":"TestRunPane","part":{"__isSmartRef__":true,"id":117},"attributeConnections":[{"__isSmartRef__":true,"id":341},{"__isSmartRef__":true,"id":367},{"__isSmartRef__":true,"id":368},{"__isSmartRef__":true,"id":378}],"doNotSerialize":["$$partVersions","$$loadedMetaInfo","$$part"],"doNotCopyProperties":["$$partVersions","$$loadedMetaInfo","$$part"],"partVersions":[{"__isSmartRef__":true,"id":350},{"__isSmartRef__":true,"id":354},{"__isSmartRef__":true,"id":358}],"loadedMetaInfo":{"__isSmartRef__":true,"id":379},"json":"{\"id\":0,\"registry\":{\"0\":{\"submorphs\":[{\"__isSmartRef__\":true,\"id\":1},{\"__isSmartRef__\":true,\"id\":43},{\"__isSmartRef__\":true,\"id\":57}],\"scripts\":[],\"id\":547,\"shape\":{\"__isSmartRef__\":true,\"id\":70},\"droppingEnabled\":true,\"halosEnabled\":true,\"registeredForMouseEvents\":true,\"_Position\":{\"__isSmartRef__\":true,\"id\":76},\"showsHalos\":false,\"name\":\"TestRunPane\",\"_Rotation\":0,\"__SourceModuleName__\":\"Global.lively.morphic.Core\",\"partsBinMetaInfo\":{\"__isSmartRef__\":true,\"id\":77},\"_Scale\":1,\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":78},\"eventHandler\":{\"__isSmartRef__\":true,\"id\":79},\"__serializedLivelyClosures__\":{\"__isSmartRef__\":true,\"id\":80},\"__LivelyClassName__\":\"lively.morphic.Box\"},\"1\":{\"submorphs\":[{\"__isSmartRef__\":true,\"id\":2}],\"scripts\":[],\"id\":548,\"shape\":{\"__isSmartRef__\":true,\"id\":15},\"grabbingEnabled\":false,\"droppingEnabled\":false,\"halosEnabled\":true,\"registeredForMouseEvents\":true,\"_Position\":{\"__isSmartRef__\":true,\"id\":30},\"value\":false,\"toggle\":false,\"isActive\":true,\"normalFill\":{\"__isSmartRef__\":true,\"id\":18},\"lighterFill\":{\"__isSmartRef__\":true,\"id\":31},\"label\":{\"__isSmartRef__\":true,\"id\":2},\"owner\":{\"__isSmartRef__\":true,\"id\":0},\"_Rotation\":0,\"showsHalos\":false,\"name\":\"runButton\",\"attributeConnections\":[{\"__isSmartRef__\":true,\"id\":40}],\"doNotSerialize\":[\"$$fire\"],\"doNotCopyProperties\":[\"$$fire\"],\"__SourceModuleName__\":\"Global.lively.morphic.Widgets\",\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":41},\"eventHandler\":{\"__isSmartRef__\":true,\"id\":42},\"__LivelyClassName__\":\"lively.morphic.Button\"},\"2\":{\"submorphs\":[],\"scripts\":[],\"id\":549,\"shape\":{\"__isSmartRef__\":true,\"id\":3},\"grabbingEnabled\":false,\"droppingEnabled\":false,\"halosEnabled\":true,\"fixedWidth\":false,\"fixedHeight\":false,\"allowsInput\":false,\"_FontFamily\":\"Helvetica\",\"registeredForMouseEvents\":true,\"_Position\":{\"__isSmartRef__\":true,\"id\":8},\"_MaxTextWidth\":null,\"_MaxTextHeight\":null,\"textColor\":{\"__isSmartRef__\":true,\"id\":6},\"padding\":{\"__isSmartRef__\":true,\"id\":9},\"_Padding\":{\"__isSmartRef__\":true,\"id\":9},\"owner\":{\"__isSmartRef__\":true,\"id\":1},\"isLabel\":true,\"eventsAreIgnored\":true,\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"_ClipMode\":\"visible\",\"textChunks\":[{\"__isSmartRef__\":true,\"id\":10}],\"priorExtent\":{\"__isSmartRef__\":true,\"id\":12},\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":13},\"eventHandler\":{\"__isSmartRef__\":true,\"id\":14},\"__LivelyClassName__\":\"lively.morphic.Text\"},\"3\":{\"borderWidth\":0,\"fill\":null,\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"_Position\":{\"__isSmartRef__\":true,\"id\":4},\"_Extent\":{\"__isSmartRef__\":true,\"id\":5},\"_BorderColor\":{\"__isSmartRef__\":true,\"id\":6},\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":7},\"__LivelyClassName__\":\"lively.morphic.Shapes.Rectangle\"},\"4\":{\"x\":0,\"y\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"5\":{\"x\":57,\"y\":29,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"6\":{\"r\":0,\"g\":0,\"b\":0,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"7\":{\"init\":\"initHTML\",\"appendShape\":\"renderHTML\",\"setPosition\":\"setPositionHTML\",\"setExtent\":\"setExtentHTML\",\"setFill\":\"setFillHTML\",\"setBorderColor\":\"setBorderColorHTML\",\"setBorderWidth\":\"setBorderWidthHTML\",\"setStrokeOpacity\":\"setStrokeOpacityHTML\",\"setBorderRadius\":\"setBorderRadiusHTML\",\"setBorderStyle\":\"setBorderStyleHTML\",\"setOpacity\":\"setOpacityHTML\"},\"8\":{\"x\":0,\"y\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"9\":{\"x\":5,\"y\":5,\"width\":0,\"height\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Rectangle\"},\"10\":{\"style\":{\"__isSmartRef__\":true,\"id\":11},\"morph\":{\"__isSmartRef__\":true,\"id\":2},\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"storedString\":\"run\",\"__LivelyClassName__\":\"lively.morphic.TextChunk\"},\"11\":{\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"__LivelyClassName__\":\"lively.morphic.TextEmphasis\"},\"12\":{\"x\":57,\"y\":29,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"13\":{\"replaceRenderContext\":\"replaceRenderContextHTML\",\"init\":\"initHTML\",\"append\":\"appendHTML\",\"remove\":\"removeHTML\",\"triggerEvent\":\"triggerEventHTML\",\"setPosition\":\"setPositionHTML\",\"setRotation\":\"setRotationHTML\",\"setExtent\":\"setExtentHTML\",\"setScale\":\"setScaleHTML\",\"setVisible\":\"setVisibleHTML\",\"setOrigin\":\"setOriginHTML\",\"setClipMode\":\"setClipModeHTML\",\"setHandStyle\":\"setHandStyleHTML\",\"updateText\":\"updateTextHTML\",\"setTextExtent\":\"setTextExtentHTML\",\"setMaxTextWidth\":\"setMaxTextWidthHTML\",\"setMaxTextHeight\":\"setMaxTextHeightHTML\",\"getTextExtent\":\"getTextExtentHTML\",\"getTextString\":\"getTextStringHTML\",\"ignoreTextEvents\":\"ignoreTextEventsHTML\",\"enableTextEvents\":\"enableTextEventsHTML\",\"setFontFamily\":\"setFontFamilyHTML\",\"setFontSize\":\"setFontSizeHTML\",\"setTextColor\":\"setTextColorHTML\",\"setPadding\":\"setPaddingHTML\",\"setAlign\":\"setAlignHTML\",\"setVerticalAlign\":\"setVerticalAlignHTML\",\"setDisplay\":\"setDisplayHTML\",\"setWhiteSpaceHandling\":\"setWhiteSpaceHandlingHTML\"},\"14\":{\"morph\":{\"__isSmartRef__\":true,\"id\":2},\"__LivelyClassName__\":\"lively.morphic.EventHandler\",\"__SourceModuleName__\":\"Global.lively.morphic.Events\"},\"15\":{\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"_Position\":{\"__isSmartRef__\":true,\"id\":16},\"_Extent\":{\"__isSmartRef__\":true,\"id\":17},\"_Fill\":{\"__isSmartRef__\":true,\"id\":18},\"_BorderWidth\":1,\"_BorderColor\":{\"__isSmartRef__\":true,\"id\":28},\"_BorderRadius\":5,\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":29},\"__LivelyClassName__\":\"lively.morphic.Shapes.Rectangle\"},\"16\":{\"x\":0,\"y\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"17\":{\"x\":57,\"y\":29,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"18\":{\"stops\":[{\"__isSmartRef__\":true,\"id\":19},{\"__isSmartRef__\":true,\"id\":21},{\"__isSmartRef__\":true,\"id\":23},{\"__isSmartRef__\":true,\"id\":25}],\"vector\":{\"__isSmartRef__\":true,\"id\":27},\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"__LivelyClassName__\":\"lively.morphic.LinearGradient\"},\"19\":{\"offset\":0,\"color\":{\"__isSmartRef__\":true,\"id\":20}},\"20\":{\"r\":0.9600000000000001,\"g\":0.9600000000000001,\"b\":0.9600000000000001,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"21\":{\"offset\":0.4,\"color\":{\"__isSmartRef__\":true,\"id\":22}},\"22\":{\"r\":0.8200000000000001,\"g\":0.8200000000000001,\"b\":0.8200000000000001,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"23\":{\"offset\":0.6,\"color\":{\"__isSmartRef__\":true,\"id\":24}},\"24\":{\"r\":0.8200000000000001,\"g\":0.8200000000000001,\"b\":0.8200000000000001,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"25\":{\"offset\":1,\"color\":{\"__isSmartRef__\":true,\"id\":26}},\"26\":{\"r\":0.94,\"g\":0.94,\"b\":0.94,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"27\":{\"x\":0,\"y\":0,\"width\":0,\"height\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Rectangle\"},\"28\":{\"r\":0.4,\"g\":0.4,\"b\":0.4,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"29\":{\"init\":\"initHTML\",\"appendShape\":\"renderHTML\",\"setPosition\":\"setPositionHTML\",\"setExtent\":\"setExtentHTML\",\"setFill\":\"setFillHTML\",\"setBorderColor\":\"setBorderColorHTML\",\"setBorderWidth\":\"setBorderWidthHTML\",\"setStrokeOpacity\":\"setStrokeOpacityHTML\",\"setBorderRadius\":\"setBorderRadiusHTML\",\"setBorderStyle\":\"setBorderStyleHTML\",\"setOpacity\":\"setOpacityHTML\"},\"30\":{\"x\":10,\"y\":10,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"31\":{\"stops\":[{\"__isSmartRef__\":true,\"id\":32},{\"__isSmartRef__\":true,\"id\":34},{\"__isSmartRef__\":true,\"id\":36},{\"__isSmartRef__\":true,\"id\":38}],\"vector\":{\"__isSmartRef__\":true,\"id\":27},\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"__LivelyClassName__\":\"lively.morphic.LinearGradient\"},\"32\":{\"offset\":0,\"color\":{\"__isSmartRef__\":true,\"id\":33}},\"33\":{\"r\":0.98,\"g\":0.98,\"b\":0.98,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"34\":{\"offset\":0.4,\"color\":{\"__isSmartRef__\":true,\"id\":35}},\"35\":{\"r\":0.91,\"g\":0.91,\"b\":0.91,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"36\":{\"offset\":0.6,\"color\":{\"__isSmartRef__\":true,\"id\":37}},\"37\":{\"r\":0.91,\"g\":0.91,\"b\":0.91,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"38\":{\"offset\":1,\"color\":{\"__isSmartRef__\":true,\"id\":39}},\"39\":{\"r\":0.97,\"g\":0.97,\"b\":0.97,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"40\":{\"sourceObj\":{\"__isSmartRef__\":true,\"id\":1},\"sourceAttrName\":\"fire\",\"targetObj\":{\"__isSmartRef__\":true,\"id\":0},\"targetMethodName\":\"runTest\",\"__SourceModuleName__\":\"Global.lively.bindings\",\"__LivelyClassName__\":\"AttributeConnection\"},\"41\":{\"replaceRenderContext\":\"replaceRenderContextHTML\",\"init\":\"initHTML\",\"append\":\"appendHTML\",\"remove\":\"removeHTML\",\"triggerEvent\":\"triggerEventHTML\",\"setPosition\":\"setPositionHTML\",\"setRotation\":\"setRotationHTML\",\"setExtent\":\"setExtentHTML\",\"setScale\":\"setScaleHTML\",\"setVisible\":\"setVisibleHTML\",\"setOrigin\":\"setOriginHTML\",\"setClipMode\":\"setClipModeHTML\",\"setHandStyle\":\"setHandStyleHTML\"},\"42\":{\"morph\":{\"__isSmartRef__\":true,\"id\":1},\"__LivelyClassName__\":\"lively.morphic.EventHandler\",\"__SourceModuleName__\":\"Global.lively.morphic.Events\"},\"43\":{\"submorphs\":[],\"scripts\":[],\"id\":550,\"shape\":{\"__isSmartRef__\":true,\"id\":44},\"grabbingEnabled\":false,\"droppingEnabled\":false,\"halosEnabled\":true,\"fixedWidth\":true,\"fixedHeight\":true,\"allowsInput\":true,\"_FontFamily\":\"Monaco\",\"registeredForMouseEvents\":true,\"_Position\":{\"__isSmartRef__\":true,\"id\":49},\"_MaxTextWidth\":449,\"_MaxTextHeight\":163,\"textColor\":{\"__isSmartRef__\":true,\"id\":6},\"owner\":{\"__isSmartRef__\":true,\"id\":0},\"showsHalos\":false,\"name\":\"testResult\",\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"padding\":{\"__isSmartRef__\":true,\"id\":50},\"layout\":{\"__isSmartRef__\":true,\"id\":51},\"_FontSize\":10,\"_Padding\":{\"__isSmartRef__\":true,\"id\":50},\"_ClipMode\":\"scroll\",\"textChunks\":[{\"__isSmartRef__\":true,\"id\":52}],\"priorExtent\":{\"__isSmartRef__\":true,\"id\":54},\"priorSelectionRange\":[0,0],\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":55},\"eventHandler\":{\"__isSmartRef__\":true,\"id\":56},\"__LivelyClassName__\":\"lively.morphic.Text\"},\"44\":{\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"_Position\":{\"__isSmartRef__\":true,\"id\":45},\"_Extent\":{\"__isSmartRef__\":true,\"id\":46},\"_Fill\":{\"__isSmartRef__\":true,\"id\":47},\"_BorderWidth\":1,\"_BorderColor\":{\"__isSmartRef__\":true,\"id\":6},\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":48},\"__LivelyClassName__\":\"lively.morphic.Shapes.Rectangle\"},\"45\":{\"x\":0,\"y\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"46\":{\"x\":449,\"y\":163,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"47\":{\"r\":0,\"g\":0.8,\"b\":0,\"a\":1,\"__LivelyClassName__\":\"Color\",\"__SourceModuleName__\":\"Global\"},\"48\":{\"init\":\"initHTML\",\"appendShape\":\"renderHTML\",\"setPosition\":\"setPositionHTML\",\"setExtent\":\"setExtentHTML\",\"setFill\":\"setFillHTML\",\"setBorderColor\":\"setBorderColorHTML\",\"setBorderWidth\":\"setBorderWidthHTML\",\"setStrokeOpacity\":\"setStrokeOpacityHTML\",\"setBorderRadius\":\"setBorderRadiusHTML\",\"setBorderStyle\":\"setBorderStyleHTML\",\"setOpacity\":\"setOpacityHTML\"},\"49\":{\"x\":11,\"y\":48,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"50\":{\"x\":5,\"y\":5,\"width\":0,\"height\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Rectangle\"},\"51\":{\"resizeWidth\":true,\"resizeHeight\":true},\"52\":{\"style\":{\"__isSmartRef__\":true,\"id\":53},\"morph\":{\"__isSmartRef__\":true,\"id\":43},\"storedString\":\"5ms for 0 tests\",\"__LivelyClassName__\":\"lively.morphic.TextChunk\",\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\"},\"53\":{\"__LivelyClassName__\":\"lively.morphic.TextEmphasis\",\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\"},\"54\":{\"x\":449,\"y\":163,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"55\":{\"replaceRenderContext\":\"replaceRenderContextHTML\",\"init\":\"initHTML\",\"append\":\"appendHTML\",\"remove\":\"removeHTML\",\"triggerEvent\":\"triggerEventHTML\",\"setPosition\":\"setPositionHTML\",\"setRotation\":\"setRotationHTML\",\"setExtent\":\"setExtentHTML\",\"setScale\":\"setScaleHTML\",\"setVisible\":\"setVisibleHTML\",\"setOrigin\":\"setOriginHTML\",\"setClipMode\":\"setClipModeHTML\",\"setHandStyle\":\"setHandStyleHTML\",\"updateText\":\"updateTextHTML\",\"setTextExtent\":\"setTextExtentHTML\",\"setMaxTextWidth\":\"setMaxTextWidthHTML\",\"setMaxTextHeight\":\"setMaxTextHeightHTML\",\"getTextExtent\":\"getTextExtentHTML\",\"getTextString\":\"getTextStringHTML\",\"ignoreTextEvents\":\"ignoreTextEventsHTML\",\"enableTextEvents\":\"enableTextEventsHTML\",\"setFontFamily\":\"setFontFamilyHTML\",\"setFontSize\":\"setFontSizeHTML\",\"setTextColor\":\"setTextColorHTML\",\"setPadding\":\"setPaddingHTML\",\"setAlign\":\"setAlignHTML\",\"setVerticalAlign\":\"setVerticalAlignHTML\",\"setDisplay\":\"setDisplayHTML\",\"setWhiteSpaceHandling\":\"setWhiteSpaceHandlingHTML\"},\"56\":{\"morph\":{\"__isSmartRef__\":true,\"id\":43},\"__LivelyClassName__\":\"lively.morphic.EventHandler\",\"__SourceModuleName__\":\"Global.lively.morphic.Events\"},\"57\":{\"submorphs\":[],\"scripts\":[],\"id\":551,\"shape\":{\"__isSmartRef__\":true,\"id\":58},\"grabbingEnabled\":false,\"droppingEnabled\":false,\"halosEnabled\":true,\"fixedWidth\":true,\"fixedHeight\":false,\"allowsInput\":true,\"_FontFamily\":\"Helvetica\",\"registeredForMouseEvents\":true,\"_Position\":{\"__isSmartRef__\":true,\"id\":64},\"_MaxTextWidth\":366,\"_MaxTextHeight\":null,\"textColor\":{\"__isSmartRef__\":true,\"id\":62},\"showsHalos\":false,\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"owner\":{\"__isSmartRef__\":true,\"id\":0},\"_Rotation\":0,\"name\":\"testModuleNS\",\"charsReplaced\":\"Tests.TextBasicsTest\",\"lastFindLoc\":-18,\"_ClipMode\":\"visible\",\"textChunks\":[{\"__isSmartRef__\":true,\"id\":65}],\"priorExtent\":{\"__isSmartRef__\":true,\"id\":67},\"priorSelectionRange\":[27,27],\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":68},\"eventHandler\":{\"__isSmartRef__\":true,\"id\":69},\"__LivelyClassName__\":\"lively.morphic.Text\"},\"58\":{\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"_Position\":{\"__isSmartRef__\":true,\"id\":59},\"_Extent\":{\"__isSmartRef__\":true,\"id\":60},\"_Fill\":{\"__isSmartRef__\":true,\"id\":61},\"_BorderWidth\":1,\"_BorderColor\":{\"__isSmartRef__\":true,\"id\":62},\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":63},\"__LivelyClassName__\":\"lively.morphic.Shapes.Rectangle\"},\"59\":{\"x\":0,\"y\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"60\":{\"x\":366,\"y\":18,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"61\":{\"r\":0.95,\"g\":0.95,\"b\":0.95,\"a\":1,\"__LivelyClassName__\":\"Color\",\"__SourceModuleName__\":\"Global\"},\"62\":{\"r\":0,\"g\":0,\"b\":0,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"63\":{\"init\":\"initHTML\",\"appendShape\":\"renderHTML\",\"setPosition\":\"setPositionHTML\",\"setExtent\":\"setExtentHTML\",\"setFill\":\"setFillHTML\",\"setBorderColor\":\"setBorderColorHTML\",\"setBorderWidth\":\"setBorderWidthHTML\",\"setStrokeOpacity\":\"setStrokeOpacityHTML\",\"setBorderRadius\":\"setBorderRadiusHTML\",\"setBorderStyle\":\"setBorderStyleHTML\",\"setOpacity\":\"setOpacityHTML\"},\"64\":{\"x\":102,\"y\":12,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"65\":{\"style\":{\"__isSmartRef__\":true,\"id\":66},\"morph\":{\"__isSmartRef__\":true,\"id\":57},\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"storedString\":\"['Global']\",\"__LivelyClassName__\":\"lively.morphic.TextChunk\"},\"66\":{\"__SourceModuleName__\":\"Global.lively.morphic.TextCore\",\"__LivelyClassName__\":\"lively.morphic.TextEmphasis\"},\"67\":{\"x\":366,\"y\":18,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"68\":{\"replaceRenderContext\":\"replaceRenderContextHTML\",\"init\":\"initHTML\",\"append\":\"appendHTML\",\"remove\":\"removeHTML\",\"triggerEvent\":\"triggerEventHTML\",\"setPosition\":\"setPositionHTML\",\"setRotation\":\"setRotationHTML\",\"setExtent\":\"setExtentHTML\",\"setScale\":\"setScaleHTML\",\"setVisible\":\"setVisibleHTML\",\"setOrigin\":\"setOriginHTML\",\"setClipMode\":\"setClipModeHTML\",\"setHandStyle\":\"setHandStyleHTML\",\"updateText\":\"updateTextHTML\",\"setTextExtent\":\"setTextExtentHTML\",\"setMaxTextWidth\":\"setMaxTextWidthHTML\",\"setMaxTextHeight\":\"setMaxTextHeightHTML\",\"getTextExtent\":\"getTextExtentHTML\",\"getTextString\":\"getTextStringHTML\",\"ignoreTextEvents\":\"ignoreTextEventsHTML\",\"enableTextEvents\":\"enableTextEventsHTML\",\"setFontFamily\":\"setFontFamilyHTML\",\"setFontSize\":\"setFontSizeHTML\",\"setTextColor\":\"setTextColorHTML\",\"setPadding\":\"setPaddingHTML\",\"setAlign\":\"setAlignHTML\",\"setVerticalAlign\":\"setVerticalAlignHTML\",\"setDisplay\":\"setDisplayHTML\",\"setWhiteSpaceHandling\":\"setWhiteSpaceHandlingHTML\"},\"69\":{\"morph\":{\"__isSmartRef__\":true,\"id\":57},\"__LivelyClassName__\":\"lively.morphic.EventHandler\",\"__SourceModuleName__\":\"Global.lively.morphic.Events\"},\"70\":{\"__SourceModuleName__\":\"Global.lively.morphic.Shapes\",\"_Position\":{\"__isSmartRef__\":true,\"id\":71},\"_Extent\":{\"__isSmartRef__\":true,\"id\":72},\"_Fill\":{\"__isSmartRef__\":true,\"id\":73},\"_BorderWidth\":1,\"_BorderColor\":{\"__isSmartRef__\":true,\"id\":74},\"renderContextTable\":{\"__isSmartRef__\":true,\"id\":75},\"__LivelyClassName__\":\"lively.morphic.Shapes.Rectangle\"},\"71\":{\"x\":0,\"y\":0,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"72\":{\"x\":479,\"y\":225,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Point\"},\"73\":{\"r\":0.839,\"g\":0.839,\"b\":0.839,\"a\":1,\"__LivelyClassName__\":\"Color\",\"__SourceModuleName__\":\"Global\"},\"74\":{\"r\":0,\"g\":0,\"b\":0,\"a\":1,\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"Color\"},\"75\":{\"init\":\"initHTML\",\"appendShape\":\"renderHTML\",\"setPosition\":\"setPositionHTML\",\"setExtent\":\"setExtentHTML\",\"setFill\":\"setFillHTML\",\"setBorderColor\":\"setBorderColorHTML\",\"setBorderWidth\":\"setBorderWidthHTML\",\"setStrokeOpacity\":\"setStrokeOpacityHTML\",\"setBorderRadius\":\"setBorderRadiusHTML\",\"setBorderStyle\":\"setBorderStyleHTML\",\"setOpacity\":\"setOpacityHTML\"},\"76\":{\"x\":0,\"y\":0,\"__LivelyClassName__\":\"Point\",\"__SourceModuleName__\":\"Global\"},\"77\":{\"partsSpaceName\":\"PartsBin/Testing/\",\"__SourceModuleName__\":\"Global.lively.PartsBin\",\"migrationLevel\":2,\"comment\":\"Specify a namespace and run all the TestCase classes defined in it.\",\"__LivelyClassName__\":\"lively.PartsBin.PartsBinMetaInfo\"},\"78\":{\"replaceRenderContext\":\"replaceRenderContextHTML\",\"init\":\"initHTML\",\"append\":\"appendHTML\",\"remove\":\"removeHTML\",\"triggerEvent\":\"triggerEventHTML\",\"setPosition\":\"setPositionHTML\",\"setRotation\":\"setRotationHTML\",\"setExtent\":\"setExtentHTML\",\"setScale\":\"setScaleHTML\",\"setVisible\":\"setVisibleHTML\",\"setOrigin\":\"setOriginHTML\",\"setClipMode\":\"setClipModeHTML\",\"setHandStyle\":\"setHandStyleHTML\"},\"79\":{\"morph\":{\"__isSmartRef__\":true,\"id\":0},\"__LivelyClassName__\":\"lively.morphic.EventHandler\",\"__SourceModuleName__\":\"Global.lively.morphic.Events\"},\"80\":{\"runTest\":{\"__isSmartRef__\":true,\"id\":81}},\"81\":{\"varMapping\":{\"__isSmartRef__\":true,\"id\":82},\"source\":\"function runTest() {\\n\\nmodule('lively.TestFramework').load(true);\\n\\nvar moduleNames = eval(this.get('testModuleNS').textString),\\n\\tmodules = moduleNames.collect(function(name) { return module(name) }),\\n\\tresultText = this.get('testResult'),\\n\\tstartTime = new Date(),\\n\\tsuite = new TestSuite();\\n\\n\\tresultText.setFill(Color.white);\\n\\tresultText.setTextString('running...');\\n\\nmodules.forEach(function(m) {\\n\\tif (!m.isLoaded()) m.load(true);\\n\\tsuite.testCasesFromModule(m);\\n});\\nvar noOfTestCases = suite.testCaseClasses.inject(0, function(sum, testClass) {\\n\\treturn sum + new testClass().allTestSelectors().length\\n});\\nsuite.runFinished = function() {\\n\\tGlobal.testResult = suite.result\\n\\tif (suite.result.failed.length == 0) {\\n\\t\\tvar time = new Date() - startTime;\\n\\t\\tresultText.setFill(Color.green);\\n\\t\\tresultText.setTextString(time.toString() + 'ms for ' + noOfTestCases + ' tests');\\n\\t\\treturn;\\n\\t}\\n\\tvar failStr = suite.result.failed.collect(function(result) {\\n\\t\\tvar msg = result.classname + '>>' + result.selector;\\n\\t\\tmsg += '\\\\n' + result.err.message;\\n\\t\\tmsg += '\\\\n' + result.err.stack;\\n\\t\\treturn msg;\\n\\t}).join('\\\\n---------\\\\n');\\n\\tresultText.setFill(Color.red);\\n\\tresultText.setTextString(failStr);\\n} /* runFinished */\\nsuite.runAll();\\n\\n}\",\"funcProperties\":{\"__isSmartRef__\":true,\"id\":83},\"__SourceModuleName__\":\"Global\",\"__LivelyClassName__\":\"lively.Closure\"},\"82\":{\"this\":{\"__isSmartRef__\":true,\"id\":0}},\"83\":{},\"isSimplifiedRegistry\":true}}","__SourceModuleName__":"Global.lively.PartsBin","__LivelyClassName__":"lively.PartsBin.PartItem"},"341":{"sourceObj":{"__isSmartRef__":true,"id":340},"sourceAttrName":"partVersions","targetObj":{"__isSmartRef__":true,"id":342},"targetMethodName":"updateList","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"342":{"submorphs":[],"scripts":[],"id":1417,"shape":{"__isSmartRef__":true,"id":343},"droppingEnabled":true,"halosEnabled":true,"_Position":{"__isSmartRef__":true,"id":349},"itemList":[{"__isSmartRef__":true,"id":350},{"__isSmartRef__":true,"id":354},{"__isSmartRef__":true,"id":358}],"showsHalos":false,"name":"selectedPartVersions","partsBinMetaInfo":{"__isSmartRef__":true,"id":362},"__SourceModuleName__":"Global.lively.morphic.Core","_Rotation":0,"_Scale":1,"_ClipMode":"scroll","owner":{"__isSmartRef__":true,"id":202},"prevScroll":[0,0],"layout":{"__isSmartRef__":true,"id":363},"priorExtent":{"__isSmartRef__":true,"id":364},"renderContextTable":{"__isSmartRef__":true,"id":365},"eventHandler":{"__isSmartRef__":true,"id":366},"__LivelyClassName__":"lively.morphic.List"},"343":{"position":{"__isSmartRef__":true,"id":344},"_Extent":{"__isSmartRef__":true,"id":345},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":346},"_Fill":{"__isSmartRef__":true,"id":347},"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":348},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"344":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"345":{"x":388.1842763684606,"y":83,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"346":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"347":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"348":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"349":{"x":577.5,"y":71.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"350":{"rev":77777,"author":"robertkrahn","date":{"__isSmartRef__":true,"id":351},"url":{"__isSmartRef__":true,"id":352},"changes":[{"__isSmartRef__":true,"id":353}],"__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"SVNVersionInfo"},"351":{},"352":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Testing/TestRunPane.json","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"353":{"type":"S:modified","url":"/PartsBin/Testing/TestRunPane.json"},"354":{"rev":72119,"author":"robertkrahn","date":{"__isSmartRef__":true,"id":355},"url":{"__isSmartRef__":true,"id":356},"changes":[{"__isSmartRef__":true,"id":357}],"__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"SVNVersionInfo"},"355":{},"356":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Testing/TestRunPane.json","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"357":{"type":"S:modified","url":"/PartsBin/Testing/TestRunPane.json"},"358":{"rev":68735,"author":"robertkrahn","date":{"__isSmartRef__":true,"id":359},"url":{"__isSmartRef__":true,"id":360},"changes":[{"__isSmartRef__":true,"id":361}],"__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"SVNVersionInfo"},"359":{},"360":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Testing/TestRunPane.json","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"361":{"type":"S:added","url":null},"362":{"partsSpaceName":"PartsBin/NewWorld","migrationLevel":2,"__SourceModuleName__":"Global.lively.PartsBin","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"363":{"resizeWidth":true},"364":{"x":389.1842763684606,"y":83,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"365":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"366":{"morph":{"__isSmartRef__":true,"id":342},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"367":{"sourceObj":{"__isSmartRef__":true,"id":340},"sourceAttrName":"loadedMetaInfo","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"setMetaInfoOfSelectedItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"368":{"sourceObj":{"__isSmartRef__":true,"id":340},"sourceAttrName":"part","targetObj":{"__isSmartRef__":true,"id":369},"targetMethodName":"remove","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"369":{"submorphs":[],"scripts":[],"id":1476,"renderContextTable":{"__isSmartRef__":true,"id":370},"shape":{"__isSmartRef__":true,"id":371},"droppingEnabled":true,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":376},"_Position":{"__isSmartRef__":true,"id":377},"owner":null,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"370":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"371":{"_Position":{"__isSmartRef__":true,"id":372},"renderContextTable":{"__isSmartRef__":true,"id":373},"_Extent":{"__isSmartRef__":true,"id":374},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":{"__isSmartRef__":true,"id":375},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"372":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"373":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"374":{"x":100,"y":100,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"375":{"r":0.8,"g":0.8,"b":0.8,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"376":{"morph":{"__isSmartRef__":true,"id":369},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"377":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"378":{"sourceObj":{"__isSmartRef__":true,"id":340},"sourceAttrName":"part","targetObj":{"__isSmartRef__":true,"id":309},"targetMethodName":"openLoadedPartsBinItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"379":{"partsSpaceName":"PartsBin/Testing/","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":2,"comment":"Specify a namespace and run all the TestCase classes defined in it.","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"380":{"position":{"__isSmartRef__":true,"id":381},"_Extent":{"__isSmartRef__":true,"id":382},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":383},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":384},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"381":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"382":{"x":415,"y":452.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"383":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"384":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"385":{"x":154,"y":37,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"386":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":2,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"387":{"x":415,"y":452.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"388":{"sourceObj":{"__isSmartRef__":true,"id":275},"sourceAttrName":"selectedItem","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"setSelectedPartItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"389":{"resizeHeight":true},"390":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"391":{"morph":{"__isSmartRef__":true,"id":275},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"392":{"adjustForNewBounds":{"__isSmartRef__":true,"id":393},"unselectAll":{"__isSmartRef__":true,"id":400},"selectPartItem":{"__isSmartRef__":true,"id":403}},"393":{"varMapping":{"__isSmartRef__":true,"id":394},"source":"function adjustForNewBounds() {\n/*\n\tthis.adjustForNewBounds()\n*/\n\t$super();\n\tvar bounds = this.innerBounds(),\n\t\tx = bounds.x,\n\t\ty = bounds.y,\n\t\twidth = bounds.width;\n\tthis.submorphs.forEach(function(morph) {\n\t\tvar extent = morph.getExtent();\n\t\tif (extent.x + x > width) {\n\t\t\tx = 0;\n\t\t\ty += extent.y;\n\t\t}\n\t\tmorph.setPosition(pt(x,y))\n\t\tx += extent.x;\n\t})\n}","funcProperties":{"__isSmartRef__":true,"id":399},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"394":{"this":{"__isSmartRef__":true,"id":275},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":395}},"395":{"$super":{"__isSmartRef__":true,"id":396}},"396":{"varMapping":{"__isSmartRef__":true,"id":397},"source":"function () {\n\t\t\t\ttry {\n\t\t\t\t\treturn obj.constructor.prototype[name].apply(obj, arguments)\n\t\t\t\t} catch(e) {\n\t\t\t\t\talert('Error in $super call: ' + e + '\\n' + e.stack);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}","funcProperties":{"__isSmartRef__":true,"id":398},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"397":{"obj":{"__isSmartRef__":true,"id":275},"name":"adjustForNewBounds"},"398":{},"399":{},"400":{"varMapping":{"__isSmartRef__":true,"id":401},"source":"function unselectAll() {\n\tthis.submorphs.invoke('showAsNotSelected');\n}","funcProperties":{"__isSmartRef__":true,"id":402},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"401":{"this":{"__isSmartRef__":true,"id":275}},"402":{},"403":{"varMapping":{"__isSmartRef__":true,"id":404},"source":"function selectPartItem(item) {\n\tthis.selectedItem = item && item.partItem;\n\tthis.submorphs.without(item).invoke('showAsNotSelected');\n}","funcProperties":{"__isSmartRef__":true,"id":405},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"404":{"this":{"__isSmartRef__":true,"id":275}},"405":{},"406":{"submorphs":[],"scripts":[],"id":1412,"shape":{"__isSmartRef__":true,"id":407},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":false,"allowsInput":true,"_FontFamily":"Arial, sans-serif","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":412},"_MaxTextWidth":223,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":410},"showsHalos":false,"_FontSize":12,"__SourceModuleName__":"Global.lively.morphic.TextCore","_Rotation":0,"name":"selectedPartName","partsBinMetaInfo":{"__isSmartRef__":true,"id":413},"textChunks":[{"__isSmartRef__":true,"id":414}],"charsReplaced":"some text","lastFindLoc":-9,"priorSelectionRange":[0,24],"prevScroll":[0,0],"_Scale":1,"owner":{"__isSmartRef__":true,"id":202},"_ClipMode":"visible","priorExtent":{"__isSmartRef__":true,"id":416},"renderContextTable":{"__isSmartRef__":true,"id":417},"eventHandler":{"__isSmartRef__":true,"id":418},"__LivelyClassName__":"lively.morphic.Text"},"407":{"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":408},"_Extent":{"__isSmartRef__":true,"id":409},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":410},"renderContextTable":{"__isSmartRef__":true,"id":411},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"408":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"409":{"x":223,"y":18,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"410":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"411":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"412":{"x":577,"y":40,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"413":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"414":{"style":{"__isSmartRef__":true,"id":415},"morph":{"__isSmartRef__":true,"id":406},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":406},"storedString":"TestRunPane","__LivelyClassName__":"lively.morphic.TextChunk"},"415":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"416":{"x":223,"y":18,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"417":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"418":{"morph":{"__isSmartRef__":true,"id":406},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"419":{"submorphs":[{"__isSmartRef__":true,"id":420}],"scripts":[],"id":1413,"shape":{"__isSmartRef__":true,"id":434},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":449},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":437},"lighterFill":{"__isSmartRef__":true,"id":450},"label":{"__isSmartRef__":true,"id":420},"attributeConnections":[{"__isSmartRef__":true,"id":459},{"__isSmartRef__":true,"id":460}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","_Rotation":0,"padding":{"__isSmartRef__":true,"id":461},"name":"loadPartButton","partsBinMetaInfo":{"__isSmartRef__":true,"id":462},"_Scale":1,"owner":{"__isSmartRef__":true,"id":202},"layout":{"__isSmartRef__":true,"id":463},"renderContextTable":{"__isSmartRef__":true,"id":464},"eventHandler":{"__isSmartRef__":true,"id":465},"__LivelyClassName__":"lively.morphic.Button"},"420":{"submorphs":[],"scripts":[],"id":1414,"shape":{"__isSmartRef__":true,"id":421},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":66,"_MaxTextHeight":21,"fixedHeight":true,"allowsInput":false,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":426},"textColor":{"__isSmartRef__":true,"id":424},"owner":{"__isSmartRef__":true,"id":419},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","textChunks":[{"__isSmartRef__":true,"id":427}],"padding":{"__isSmartRef__":true,"id":429},"_Padding":{"__isSmartRef__":true,"id":430},"prevScroll":[0,0],"_Align":"center","_FontFamily":"Arial","_ClipMode":"visible","_WhiteSpaceHandling":"pre-wrap","_VerticalAlign":"middle","_Display":"table-cell","priorExtent":{"__isSmartRef__":true,"id":431},"renderContextTable":{"__isSmartRef__":true,"id":432},"eventHandler":{"__isSmartRef__":true,"id":433},"__LivelyClassName__":"lively.morphic.Text"},"421":{"borderWidth":0,"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":422},"_Extent":{"__isSmartRef__":true,"id":423},"_BorderColor":{"__isSmartRef__":true,"id":424},"renderContextTable":{"__isSmartRef__":true,"id":425},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"422":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"423":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"424":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"425":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"426":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"427":{"style":{"__isSmartRef__":true,"id":428},"morph":{"__isSmartRef__":true,"id":420},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":420},"storedString":"load","__LivelyClassName__":"lively.morphic.TextChunk"},"428":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"429":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"430":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"431":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"432":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"433":{"morph":{"__isSmartRef__":true,"id":420},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"434":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":435},"_Extent":{"__isSmartRef__":true,"id":436},"_Fill":{"__isSmartRef__":true,"id":437},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":447},"_BorderRadius":5,"renderContextTable":{"__isSmartRef__":true,"id":448},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"435":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"436":{"x":66,"y":21,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"437":{"stops":[{"__isSmartRef__":true,"id":438},{"__isSmartRef__":true,"id":440},{"__isSmartRef__":true,"id":442},{"__isSmartRef__":true,"id":444}],"vector":{"__isSmartRef__":true,"id":446},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"438":{"offset":0,"color":{"__isSmartRef__":true,"id":439}},"439":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"440":{"offset":0.4,"color":{"__isSmartRef__":true,"id":441}},"441":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"442":{"offset":0.6,"color":{"__isSmartRef__":true,"id":443}},"443":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"444":{"offset":1,"color":{"__isSmartRef__":true,"id":445}},"445":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"446":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"447":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"448":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"449":{"x":577,"y":470.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"450":{"stops":[{"__isSmartRef__":true,"id":451},{"__isSmartRef__":true,"id":453},{"__isSmartRef__":true,"id":455},{"__isSmartRef__":true,"id":457}],"vector":{"__isSmartRef__":true,"id":446},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"451":{"offset":0,"color":{"__isSmartRef__":true,"id":452}},"452":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"453":{"offset":0.4,"color":{"__isSmartRef__":true,"id":454}},"454":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"455":{"offset":0.6,"color":{"__isSmartRef__":true,"id":456}},"456":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"457":{"offset":1,"color":{"__isSmartRef__":true,"id":458}},"458":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"459":{"sourceObj":{"__isSmartRef__":true,"id":419},"sourceAttrName":"fire","targetMethodName":"reloadEverything","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"460":{"sourceObj":{"__isSmartRef__":true,"id":419},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"loadAndOpenSelectedPartItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"461":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"462":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"463":{"moveVertical":true},"464":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"465":{"morph":{"__isSmartRef__":true,"id":419},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"466":{"submorphs":[{"__isSmartRef__":true,"id":467}],"scripts":[],"id":1415,"shape":{"__isSmartRef__":true,"id":481},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":496},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":484},"lighterFill":{"__isSmartRef__":true,"id":497},"label":{"__isSmartRef__":true,"id":467},"attributeConnections":[{"__isSmartRef__":true,"id":506},{"__isSmartRef__":true,"id":507}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","_Rotation":0,"padding":{"__isSmartRef__":true,"id":508},"name":"removePartButton","partsBinMetaInfo":{"__isSmartRef__":true,"id":509},"_Scale":1,"owner":{"__isSmartRef__":true,"id":202},"layout":{"__isSmartRef__":true,"id":510},"renderContextTable":{"__isSmartRef__":true,"id":511},"eventHandler":{"__isSmartRef__":true,"id":512},"__LivelyClassName__":"lively.morphic.Button"},"467":{"submorphs":[],"scripts":[],"id":1416,"shape":{"__isSmartRef__":true,"id":468},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":66,"_MaxTextHeight":21,"fixedHeight":true,"allowsInput":false,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":473},"textColor":{"__isSmartRef__":true,"id":471},"owner":{"__isSmartRef__":true,"id":466},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","textChunks":[{"__isSmartRef__":true,"id":474}],"padding":{"__isSmartRef__":true,"id":476},"_Padding":{"__isSmartRef__":true,"id":477},"prevScroll":[0,0],"_Align":"center","_FontFamily":"Arial","_ClipMode":"visible","_WhiteSpaceHandling":"pre-wrap","_VerticalAlign":"middle","_Display":"table-cell","priorExtent":{"__isSmartRef__":true,"id":478},"renderContextTable":{"__isSmartRef__":true,"id":479},"eventHandler":{"__isSmartRef__":true,"id":480},"__LivelyClassName__":"lively.morphic.Text"},"468":{"borderWidth":0,"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":469},"_Extent":{"__isSmartRef__":true,"id":470},"_BorderColor":{"__isSmartRef__":true,"id":471},"renderContextTable":{"__isSmartRef__":true,"id":472},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"469":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"470":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"471":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"472":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"473":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"474":{"style":{"__isSmartRef__":true,"id":475},"morph":{"__isSmartRef__":true,"id":467},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":467},"storedString":"remove","__LivelyClassName__":"lively.morphic.TextChunk"},"475":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"476":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"477":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"478":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"479":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"480":{"morph":{"__isSmartRef__":true,"id":467},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"481":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":482},"_Extent":{"__isSmartRef__":true,"id":483},"_Fill":{"__isSmartRef__":true,"id":484},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":494},"_BorderRadius":5,"renderContextTable":{"__isSmartRef__":true,"id":495},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"482":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"483":{"x":66,"y":21,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"484":{"stops":[{"__isSmartRef__":true,"id":485},{"__isSmartRef__":true,"id":487},{"__isSmartRef__":true,"id":489},{"__isSmartRef__":true,"id":491}],"vector":{"__isSmartRef__":true,"id":493},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"485":{"offset":0,"color":{"__isSmartRef__":true,"id":486}},"486":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"487":{"offset":0.4,"color":{"__isSmartRef__":true,"id":488}},"488":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"489":{"offset":0.6,"color":{"__isSmartRef__":true,"id":490}},"490":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"491":{"offset":1,"color":{"__isSmartRef__":true,"id":492}},"492":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"493":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"494":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"495":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"496":{"x":728.1562343123906,"y":470.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"497":{"stops":[{"__isSmartRef__":true,"id":498},{"__isSmartRef__":true,"id":500},{"__isSmartRef__":true,"id":502},{"__isSmartRef__":true,"id":504}],"vector":{"__isSmartRef__":true,"id":493},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"498":{"offset":0,"color":{"__isSmartRef__":true,"id":499}},"499":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"500":{"offset":0.4,"color":{"__isSmartRef__":true,"id":501}},"501":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"502":{"offset":0.6,"color":{"__isSmartRef__":true,"id":503}},"503":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"504":{"offset":1,"color":{"__isSmartRef__":true,"id":505}},"505":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"506":{"sourceObj":{"__isSmartRef__":true,"id":466},"sourceAttrName":"fire","targetMethodName":"reloadEverything","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"507":{"sourceObj":{"__isSmartRef__":true,"id":466},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"interactivelyRemoveSelectedPartItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"508":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"509":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"510":{"moveVertical":true},"511":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"512":{"morph":{"__isSmartRef__":true,"id":466},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"513":{"submorphs":[],"scripts":[],"id":1418,"shape":{"__isSmartRef__":true,"id":514},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"visible","_FontFamily":"Arial, sans-serif","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":519},"_MaxTextWidth":378.1842763684606,"_MaxTextHeight":263.01402102803513,"textColor":{"__isSmartRef__":true,"id":517},"showsHalos":false,"_FontSize":14,"__SourceModuleName__":"Global.lively.morphic.TextCore","_Rotation":0,"name":"selectedPartComment","partsBinMetaInfo":{"__isSmartRef__":true,"id":520},"textChunks":[{"__isSmartRef__":true,"id":521}],"charsReplaced":"No comment yet","lastFindLoc":-14,"priorSelectionRange":[0,0],"prevScroll":[0,0],"_Scale":1,"owner":{"__isSmartRef__":true,"id":202},"_ClipMode":"auto","priorExtent":{"__isSmartRef__":true,"id":523},"attributeConnections":[{"__isSmartRef__":true,"id":524}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"layout":{"__isSmartRef__":true,"id":525},"savedTextString":"Workspace that runs code remotely on a nodejs server at lively-kernel.org","renderContextTable":{"__isSmartRef__":true,"id":526},"eventHandler":{"__isSmartRef__":true,"id":527},"__LivelyClassName__":"lively.morphic.Text"},"514":{"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":515},"_Extent":{"__isSmartRef__":true,"id":516},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":517},"renderContextTable":{"__isSmartRef__":true,"id":518},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"515":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"516":{"x":378.1842763684606,"y":263.01402102803513,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"517":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"518":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"519":{"x":576.5,"y":170.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"520":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"521":{"style":{"__isSmartRef__":true,"id":522},"morph":{"__isSmartRef__":true,"id":513},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":513},"storedString":"Specify a namespace and run all the TestCase classes defined in it.","__LivelyClassName__":"lively.morphic.TextChunk"},"522":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"523":{"x":378.1842763684606,"y":263.01402102803513,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"524":{"sourceObj":{"__isSmartRef__":true,"id":513},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"saveCommentForSelectedPartItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"525":{"resizeWidth":true,"resizeHeight":true},"526":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"527":{"morph":{"__isSmartRef__":true,"id":513},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"528":{"submorphs":[{"__isSmartRef__":true,"id":529}],"scripts":[],"id":1419,"shape":{"__isSmartRef__":true,"id":543},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":558},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":547},"lighterFill":{"__isSmartRef__":true,"id":559},"label":{"__isSmartRef__":true,"id":529},"_Rotation":0,"name":"removeCategoryButton","showsHalos":false,"partsBinMetaInfo":{"__isSmartRef__":true,"id":568},"attributeConnections":[{"__isSmartRef__":true,"id":569}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","_Scale":1.002003004005006,"priorExtent":{"__isSmartRef__":true,"id":570},"owner":{"__isSmartRef__":true,"id":202},"layout":{"__isSmartRef__":true,"id":571},"renderContextTable":{"__isSmartRef__":true,"id":572},"eventHandler":{"__isSmartRef__":true,"id":573},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":574},"__LivelyClassName__":"lively.morphic.Button"},"529":{"submorphs":[],"scripts":[],"id":1420,"shape":{"__isSmartRef__":true,"id":530},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":535},"_MaxTextWidth":134.06609913216516,"_MaxTextHeight":21,"textStyle":null,"padding":{"__isSmartRef__":true,"id":536},"_Padding":{"__isSmartRef__":true,"id":537},"owner":{"__isSmartRef__":true,"id":528},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","_ClipMode":"hidden","priorExtent":{"__isSmartRef__":true,"id":538},"textChunks":[{"__isSmartRef__":true,"id":539}],"_Align":"center","renderContextTable":{"__isSmartRef__":true,"id":541},"eventHandler":{"__isSmartRef__":true,"id":542},"__LivelyClassName__":"lively.morphic.Text"},"530":{"position":{"__isSmartRef__":true,"id":531},"_Extent":{"__isSmartRef__":true,"id":532},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":533},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":534},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"531":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"532":{"x":134.06609913216516,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"533":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"534":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"535":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"536":{"x":5,"y":5,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"537":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"538":{"x":134.06609913216516,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"539":{"style":{"__isSmartRef__":true,"id":540},"morph":{"__isSmartRef__":true,"id":529},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":529},"storedString":"remove category","__LivelyClassName__":"lively.morphic.TextChunk"},"540":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"541":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"542":{"morph":{"__isSmartRef__":true,"id":529},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"543":{"position":{"__isSmartRef__":true,"id":544},"_Extent":{"__isSmartRef__":true,"id":545},"_BorderWidth":1.1840000000000002,"_BorderColor":{"__isSmartRef__":true,"id":546},"_Fill":{"__isSmartRef__":true,"id":547},"_BorderRadius":5.2,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":557},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"544":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"545":{"x":134.06609913216516,"y":21,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"546":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"547":{"stops":[{"__isSmartRef__":true,"id":548},{"__isSmartRef__":true,"id":550},{"__isSmartRef__":true,"id":552},{"__isSmartRef__":true,"id":554}],"vector":{"__isSmartRef__":true,"id":556},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"548":{"offset":0,"color":{"__isSmartRef__":true,"id":549}},"549":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"550":{"offset":0.4,"color":{"__isSmartRef__":true,"id":551}},"551":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"552":{"offset":0.6,"color":{"__isSmartRef__":true,"id":553}},"553":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"554":{"offset":1,"color":{"__isSmartRef__":true,"id":555}},"555":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"556":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"557":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"558":{"x":13.991486982477795,"y":469.9722079436797,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"559":{"stops":[{"__isSmartRef__":true,"id":560},{"__isSmartRef__":true,"id":562},{"__isSmartRef__":true,"id":564},{"__isSmartRef__":true,"id":566}],"vector":{"__isSmartRef__":true,"id":556},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"560":{"offset":0,"color":{"__isSmartRef__":true,"id":561}},"561":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"562":{"offset":0.4,"color":{"__isSmartRef__":true,"id":563}},"563":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"564":{"offset":0.6,"color":{"__isSmartRef__":true,"id":565}},"565":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"566":{"offset":1,"color":{"__isSmartRef__":true,"id":567}},"567":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"568":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":2,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"569":{"sourceObj":{"__isSmartRef__":true,"id":528},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":528},"targetMethodName":"onFire","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"570":{"x":133.06409612816014,"y":21,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"571":{"moveVertical":true},"572":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"573":{"morph":{"__isSmartRef__":true,"id":528},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"574":{"onFire":{"__isSmartRef__":true,"id":575}},"575":{"varMapping":{"__isSmartRef__":true,"id":576},"source":"function onFire() {\n\tthis.get('PartsBinBrowser').removeCategoryInteractively()\n}","funcProperties":{"__isSmartRef__":true,"id":577},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"576":{"this":{"__isSmartRef__":true,"id":528}},"577":{},"578":{"submorphs":[{"__isSmartRef__":true,"id":579}],"scripts":[],"id":1421,"shape":{"__isSmartRef__":true,"id":593},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":608},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":596},"lighterFill":{"__isSmartRef__":true,"id":609},"label":{"__isSmartRef__":true,"id":579},"attributeConnections":[{"__isSmartRef__":true,"id":618}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","_Rotation":0,"padding":{"__isSmartRef__":true,"id":619},"name":"movePartButton","partsBinMetaInfo":{"__isSmartRef__":true,"id":620},"_Scale":1,"owner":{"__isSmartRef__":true,"id":202},"layout":{"__isSmartRef__":true,"id":621},"renderContextTable":{"__isSmartRef__":true,"id":622},"eventHandler":{"__isSmartRef__":true,"id":623},"__LivelyClassName__":"lively.morphic.Button"},"579":{"submorphs":[],"scripts":[],"id":1422,"shape":{"__isSmartRef__":true,"id":580},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":66,"_MaxTextHeight":21,"fixedHeight":true,"allowsInput":false,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":585},"textColor":{"__isSmartRef__":true,"id":583},"owner":{"__isSmartRef__":true,"id":578},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","textChunks":[{"__isSmartRef__":true,"id":586}],"padding":{"__isSmartRef__":true,"id":588},"_Padding":{"__isSmartRef__":true,"id":589},"prevScroll":[0,0],"_Align":"center","_FontFamily":"Arial","_ClipMode":"hidden","_WhiteSpaceHandling":"pre-wrap","_VerticalAlign":"middle","_Display":"table-cell","priorExtent":{"__isSmartRef__":true,"id":590},"renderContextTable":{"__isSmartRef__":true,"id":591},"eventHandler":{"__isSmartRef__":true,"id":592},"__LivelyClassName__":"lively.morphic.Text"},"580":{"borderWidth":0,"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":581},"_Extent":{"__isSmartRef__":true,"id":582},"_BorderColor":{"__isSmartRef__":true,"id":583},"renderContextTable":{"__isSmartRef__":true,"id":584},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"581":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"582":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"583":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"584":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"585":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"586":{"style":{"__isSmartRef__":true,"id":587},"morph":{"__isSmartRef__":true,"id":579},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":579},"storedString":"move","__LivelyClassName__":"lively.morphic.TextChunk"},"587":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"588":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"589":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"590":{"x":66,"y":21,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"591":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"592":{"morph":{"__isSmartRef__":true,"id":579},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"593":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":594},"_Extent":{"__isSmartRef__":true,"id":595},"_Fill":{"__isSmartRef__":true,"id":596},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":606},"_BorderRadius":5,"renderContextTable":{"__isSmartRef__":true,"id":607},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"594":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"595":{"x":66,"y":21,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"596":{"stops":[{"__isSmartRef__":true,"id":597},{"__isSmartRef__":true,"id":599},{"__isSmartRef__":true,"id":601},{"__isSmartRef__":true,"id":603}],"vector":{"__isSmartRef__":true,"id":605},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"597":{"offset":0,"color":{"__isSmartRef__":true,"id":598}},"598":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"599":{"offset":0.4,"color":{"__isSmartRef__":true,"id":600}},"600":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"601":{"offset":0.6,"color":{"__isSmartRef__":true,"id":602}},"602":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"603":{"offset":1,"color":{"__isSmartRef__":true,"id":604}},"604":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"605":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"606":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"607":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"608":{"x":652.0040060080102,"y":470.01402102803524,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"609":{"stops":[{"__isSmartRef__":true,"id":610},{"__isSmartRef__":true,"id":612},{"__isSmartRef__":true,"id":614},{"__isSmartRef__":true,"id":616}],"vector":{"__isSmartRef__":true,"id":605},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"610":{"offset":0,"color":{"__isSmartRef__":true,"id":611}},"611":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"612":{"offset":0.4,"color":{"__isSmartRef__":true,"id":613}},"613":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"614":{"offset":0.6,"color":{"__isSmartRef__":true,"id":615}},"615":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"616":{"offset":1,"color":{"__isSmartRef__":true,"id":617}},"617":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"618":{"sourceObj":{"__isSmartRef__":true,"id":578},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"interactivelyMoveSelectedPartItem","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"619":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"620":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":1,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"621":{"moveVertical":true},"622":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"623":{"morph":{"__isSmartRef__":true,"id":578},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"624":{"submorphs":[{"__isSmartRef__":true,"id":625}],"scripts":[],"id":1423,"shape":{"__isSmartRef__":true,"id":639},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":654},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":643},"lighterFill":{"__isSmartRef__":true,"id":655},"label":{"__isSmartRef__":true,"id":625},"_Rotation":0,"name":"addCategoryButton","showsHalos":false,"partsBinMetaInfo":{"__isSmartRef__":true,"id":664},"attributeConnections":[{"__isSmartRef__":true,"id":665}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","_Scale":1.002003004005006,"priorExtent":{"__isSmartRef__":true,"id":666},"owner":{"__isSmartRef__":true,"id":202},"layout":{"__isSmartRef__":true,"id":667},"renderContextTable":{"__isSmartRef__":true,"id":668},"eventHandler":{"__isSmartRef__":true,"id":669},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":670},"__LivelyClassName__":"lively.morphic.Button"},"625":{"submorphs":[],"scripts":[],"id":1424,"shape":{"__isSmartRef__":true,"id":626},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":631},"_MaxTextWidth":134.06609913216516,"_MaxTextHeight":19.99799699599498,"textStyle":null,"padding":{"__isSmartRef__":true,"id":632},"_Padding":{"__isSmartRef__":true,"id":633},"owner":{"__isSmartRef__":true,"id":624},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.TextCore","_ClipMode":"hidden","priorExtent":{"__isSmartRef__":true,"id":634},"textChunks":[{"__isSmartRef__":true,"id":635}],"_Align":"center","renderContextTable":{"__isSmartRef__":true,"id":637},"eventHandler":{"__isSmartRef__":true,"id":638},"__LivelyClassName__":"lively.morphic.Text"},"626":{"position":{"__isSmartRef__":true,"id":627},"_Extent":{"__isSmartRef__":true,"id":628},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":629},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":630},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"627":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"628":{"x":134.06609913216516,"y":19.99799699599498,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"629":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"630":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"631":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"632":{"x":5,"y":5,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"633":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"634":{"x":134.06609913216516,"y":19.99799699599498,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"635":{"style":{"__isSmartRef__":true,"id":636},"morph":{"__isSmartRef__":true,"id":625},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":625},"storedString":"add category","__LivelyClassName__":"lively.morphic.TextChunk"},"636":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"637":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"638":{"morph":{"__isSmartRef__":true,"id":625},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"639":{"position":{"__isSmartRef__":true,"id":640},"_Extent":{"__isSmartRef__":true,"id":641},"_BorderWidth":1.1840000000000002,"_BorderColor":{"__isSmartRef__":true,"id":642},"_Fill":{"__isSmartRef__":true,"id":643},"_BorderRadius":5.2,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":653},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"640":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"641":{"x":134.06609913216516,"y":19.99799699599498,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"642":{"r":0.839,"g":0.839,"b":0.839,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"643":{"stops":[{"__isSmartRef__":true,"id":644},{"__isSmartRef__":true,"id":646},{"__isSmartRef__":true,"id":648},{"__isSmartRef__":true,"id":650}],"vector":{"__isSmartRef__":true,"id":652},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"644":{"offset":0,"color":{"__isSmartRef__":true,"id":645}},"645":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"646":{"offset":0.4,"color":{"__isSmartRef__":true,"id":647}},"647":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"648":{"offset":0.6,"color":{"__isSmartRef__":true,"id":649}},"649":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"650":{"offset":1,"color":{"__isSmartRef__":true,"id":651}},"651":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"652":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"653":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"654":{"x":14.99348998648287,"y":447.9281418555695,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"655":{"stops":[{"__isSmartRef__":true,"id":656},{"__isSmartRef__":true,"id":658},{"__isSmartRef__":true,"id":660},{"__isSmartRef__":true,"id":662}],"vector":{"__isSmartRef__":true,"id":652},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"656":{"offset":0,"color":{"__isSmartRef__":true,"id":657}},"657":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"658":{"offset":0.4,"color":{"__isSmartRef__":true,"id":659}},"659":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"660":{"offset":0.6,"color":{"__isSmartRef__":true,"id":661}},"661":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"662":{"offset":1,"color":{"__isSmartRef__":true,"id":663}},"663":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"664":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":2,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"665":{"sourceObj":{"__isSmartRef__":true,"id":624},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":624},"targetMethodName":"onFire","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"666":{"x":133.06409612816014,"y":19.99799699599498,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"667":{"moveVertical":true},"668":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"669":{"morph":{"__isSmartRef__":true,"id":624},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"670":{"onFire":{"__isSmartRef__":true,"id":671}},"671":{"varMapping":{"__isSmartRef__":true,"id":672},"source":"function onFire() {\n\tthis.get('PartsBinBrowser').addCategoryInteractively()\n}","funcProperties":{"__isSmartRef__":true,"id":673},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"672":{"this":{"__isSmartRef__":true,"id":624}},"673":{},"674":{"position":{"__isSmartRef__":true,"id":675},"_Extent":{"__isSmartRef__":true,"id":676},"_BorderWidth":2,"_BorderColor":{"__isSmartRef__":true,"id":677},"_Fill":{"__isSmartRef__":true,"id":678},"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":679},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"675":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"676":{"x":975.1842763684606,"y":502.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"677":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"678":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"679":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"680":{"x":0,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"681":{"partsSpaceName":"PartsBin/NewWorld","__SourceModuleName__":"Global.lively.PartsBin","requiredModules":["lively.PartsBin"],"migrationLevel":2,"comment":"Browser for a Parts repository.","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"682":{"sourceObj":{"__isSmartRef__":true,"id":202},"sourceAttrName":"categoryName","targetObj":{"__isSmartRef__":true,"id":202},"targetMethodName":"loadPartsOfCategory","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"683":{"resizeWidth":true,"resizeHeight":true,"adjustForNewBounds":true},"684":{"x":975.1842763684606,"y":502.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"685":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"686":{"morph":{"__isSmartRef__":true,"id":202},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"687":{"uncategorized":"PartsBin/","Text support":{"__isSmartRef__":true,"id":688},"Forms":{"__isSmartRef__":true,"id":689},"Fun":{"__isSmartRef__":true,"id":690},"Visualization":{"__isSmartRef__":true,"id":691},"Wiki":{"__isSmartRef__":true,"id":692},"Widgets":{"__isSmartRef__":true,"id":693},"Documentation":{"__isSmartRef__":true,"id":694},"Worlds":{"__isSmartRef__":true,"id":695},"DroppableBehaviors":{"__isSmartRef__":true,"id":696},"Examples":{"__isSmartRef__":true,"id":697},"Presenting":{"__isSmartRef__":true,"id":698},"Basic":{"__isSmartRef__":true,"id":699},"Inputs":{"__isSmartRef__":true,"id":700},"Debugging":{"__isSmartRef__":true,"id":701},"Tools":{"__isSmartRef__":true,"id":702},"NewWorld":{"__isSmartRef__":true,"id":703},"Database":{"__isSmartRef__":true,"id":704},"Server":{"__isSmartRef__":true,"id":705},"Demos":{"__isSmartRef__":true,"id":706},"Testing":{"__isSmartRef__":true,"id":707},"Layout":{"__isSmartRef__":true,"id":708}},"688":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Text support/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"689":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Forms/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"690":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Fun/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"691":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Visualization/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"692":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Wiki/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"693":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Widgets/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"694":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Documentation/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"695":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Worlds/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"696":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/DroppableBehaviors/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"697":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Examples/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"698":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Presenting/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"699":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Basic/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"700":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Inputs/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"701":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Debugging/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"702":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Tools/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"703":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/NewWorld/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"704":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Database/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"705":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Server/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"706":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Demos/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"707":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Testing/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"708":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/Layout/","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"709":{"onLoadFromPartsBin":{"__isSmartRef__":true,"id":710},"reloadEverything":{"__isSmartRef__":true,"id":717},"ensureCategories":{"__isSmartRef__":true,"id":720},"updateCategoriesDictFromPartsBin":{"__isSmartRef__":true,"id":723},"updateCategoryList":{"__isSmartRef__":true,"id":726},"defaultPartsBinURL":{"__isSmartRef__":true,"id":729},"reset":{"__isSmartRef__":true,"id":732},"setupConnections":{"__isSmartRef__":true,"id":735},"loadPartsOfCategory":{"__isSmartRef__":true,"id":738},"removeParts":{"__isSmartRef__":true,"id":741},"getPartsSpaceForCategory":{"__isSmartRef__":true,"id":744},"addMorphsForPartItems":{"__isSmartRef__":true,"id":747},"getURLForCategoryNamed":{"__isSmartRef__":true,"id":750},"setSelectedPartItem":{"__isSmartRef__":true,"id":753},"makeUpPartNameFor":{"__isSmartRef__":true,"id":756},"openPart":{"__isSmartRef__":true,"id":759},"interactivelyRemoveSelectedPartItem":{"__isSmartRef__":true,"id":762},"loadAndOpenSelectedPartItem":{"__isSmartRef__":true,"id":765},"addCategory":{"__isSmartRef__":true,"id":768},"addCategoryInteractively":{"__isSmartRef__":true,"id":771},"addExternalCategory":{"__isSmartRef__":true,"id":774},"removeCategory":{"__isSmartRef__":true,"id":777},"removeCategoryInteractively":{"__isSmartRef__":true,"id":780},"interactivelyMoveSelectedPartItem":{"__isSmartRef__":true,"id":783},"setMetaInfoOfSelectedItem":{"__isSmartRef__":true,"id":786},"saveCommentForSelectedPartItem":{"__isSmartRef__":true,"id":789}},"710":{"varMapping":{"__isSmartRef__":true,"id":711},"source":"function onLoadFromPartsBin() {\n\t$super();\n\tthis.reloadEverything();\n}","funcProperties":{"__isSmartRef__":true,"id":716},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"711":{"this":{"__isSmartRef__":true,"id":202},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":712}},"712":{"$super":{"__isSmartRef__":true,"id":713}},"713":{"varMapping":{"__isSmartRef__":true,"id":714},"source":"function () {\n\t\t\t\ttry {\n\t\t\t\t\treturn obj.constructor.prototype[name].apply(obj, arguments)\n\t\t\t\t} catch(e) {\n\t\t\t\t\talert('Error in $super call: ' + e + '\\n' + e.stack);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}","funcProperties":{"__isSmartRef__":true,"id":715},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"714":{"obj":{"__isSmartRef__":true,"id":202},"name":"onLoadFromPartsBin"},"715":{},"716":{},"717":{"varMapping":{"__isSmartRef__":true,"id":718},"source":"function reloadEverything() {\n\tthis.setSelectedPartItem(null)\n\tthis.updateCategoriesDictFromPartsBin();\n\tthis.updateCategoryList(this.categoryName);\n}","funcProperties":{"__isSmartRef__":true,"id":719},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"718":{"this":{"__isSmartRef__":true,"id":202}},"719":{},"720":{"varMapping":{"__isSmartRef__":true,"id":721},"source":"function ensureCategories() {\n\tif (!this.categories)\n\t\tthis.categories = {uncategorized: 'PartsBin/'};\n}","funcProperties":{"__isSmartRef__":true,"id":722},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"721":{"this":{"__isSmartRef__":true,"id":202}},"722":{},"723":{"varMapping":{"__isSmartRef__":true,"id":724},"source":"function updateCategoriesDictFromPartsBin() {\n\tthis.ensureCategories();\n\tvar webR = new WebResource(this.defaultPartsBinURL());\n\twebR.getSubElements().subCollections.forEach(function(dir) {\n\t\t// FIXME OMeta does something here...!\n\t\tvar unescape = Global.urlUnescape || Global.unescape,\n\t\t\tunescaped = unescape(dir.getURL().filename()),\n\t\t\tname = unescaped.replace(/\\/$/,\"\");\n\t\tthis.categories[name] = this.defaultPartsBinURL().withFilename(unescaped);\n\t}, this);\n}","funcProperties":{"__isSmartRef__":true,"id":725},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"724":{"this":{"__isSmartRef__":true,"id":202}},"725":{},"726":{"varMapping":{"__isSmartRef__":true,"id":727},"source":"function updateCategoryList(optCategoryName) {\n\tthis.get('categoryList').updateList(\n\t\tProperties.own(this.categories).sortBy(function(name) { return name.toLowerCase()}))\n\tthis.get('categoryList').setSelection(optCategoryName)\n}","funcProperties":{"__isSmartRef__":true,"id":728},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"727":{"this":{"__isSmartRef__":true,"id":202}},"728":{},"729":{"varMapping":{"__isSmartRef__":true,"id":730},"source":"function defaultPartsBinURL() {\n\treturn URL.codeBase.withFilename('PartsBin/');\n}","funcProperties":{"__isSmartRef__":true,"id":731},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"730":{"this":{"__isSmartRef__":true,"id":202}},"731":{},"732":{"varMapping":{"__isSmartRef__":true,"id":733},"source":"function reset() {\n\t// this.getPartsBinMetaInfo().addRequiredModule('lively.PartsBin')\n\tthis.setSelectedPartItem(null)\n\tdelete this.categories;\n\tthis.get('categoryList').updateList([])\n\tthis.get('partsBinContents').removeAllMorphs();\n}","funcProperties":{"__isSmartRef__":true,"id":734},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"733":{"this":{"__isSmartRef__":true,"id":202}},"734":{},"735":{"varMapping":{"__isSmartRef__":true,"id":736},"source":"function setupConnections() {\n\tconnect(this.closeButton, 'fire', this, 'remove')\n\tconnect(this.addCategoryButton, 'fire', this, 'addCategoryInteractively')\n\tconnect(this.get('removeCategoryButton'), 'fire', this, 'removeCategoryInteractively')\n\tconnect(this.get('categoryList'), 'selection', this, 'categoryName')\n\tconnect(this, 'categoryName', this, 'loadPartsOfCategory')\n\n\tconnect(this.get('partsBinContents'), 'selectedItem', this, 'setSelectedPartItem')\n\n\tconnect(this.get('reloadButton'), \"fire\", this, \"reloadEverything\")\n\n\tconnect(this.get('loadPartButton'), \"fire\", this, \"loadAndOpenSelectedPartItem\")\n\n\tconnect(this.get('removePartButton'), \"fire\", this, \"interactivelyRemoveSelectedPartItem\")\n\n\tconnect(this.get('movePartButton'), \"fire\", this, \"interactivelyMoveSelectedPartItem\")\n\n\tconnect(this.get('selectedPartComment'), \"savedTextString\", this, \"saveCommentForSelectedPartItem\")\n}","funcProperties":{"__isSmartRef__":true,"id":737},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"736":{"this":{"__isSmartRef__":true,"id":202}},"737":{},"738":{"varMapping":{"__isSmartRef__":true,"id":739},"source":"function loadPartsOfCategory(categoryName) {\n\tthis.removeParts();\n\tthis.setSelectedPartItem(null);\n\tif (!categoryName) return;\n\tvar partsSpace = this.getPartsSpaceForCategory(categoryName);\n\tconnect(partsSpace, 'partItems', this, 'addMorphsForPartItems', {\n\t\tconverter: function(partItemObj) { return Properties.ownValues(partItemObj) }})\n\tpartsSpace.load(false)\n}","funcProperties":{"__isSmartRef__":true,"id":740},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"739":{"this":{"__isSmartRef__":true,"id":202}},"740":{},"741":{"varMapping":{"__isSmartRef__":true,"id":742},"source":"function removeParts() {\n\tthis.get('partsBinContents').submorphs.clone().invoke('remove')\n}","funcProperties":{"__isSmartRef__":true,"id":743},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"742":{"this":{"__isSmartRef__":true,"id":202}},"743":{},"744":{"varMapping":{"__isSmartRef__":true,"id":745},"source":"function getPartsSpaceForCategory(categoryName) {\n\tvar url = this.getURLForCategoryNamed(categoryName);\n\treturn lively.PartsBin.partsSpaceWithURL(url);\n}","funcProperties":{"__isSmartRef__":true,"id":746},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"745":{"this":{"__isSmartRef__":true,"id":202}},"746":{},"747":{"varMapping":{"__isSmartRef__":true,"id":748},"source":"function addMorphsForPartItems(partItems) {\n\tthis.removeParts();\n\tpartItems\n\t\t.sortBy(function(ea) { return ea.name.toLowerCase() })\n\t\t.forEach(function(partItem) {\n\t\t\tvar morph = partItem.asPartsBinItem();\n\t\t\tthis.get('partsBinContents').addMorph(morph);\n\t\t}, this);\n\tthis.get('partsBinContents').adjustForNewBounds()\n\t// this.get('partsBinContents').scrollToTop()\n}","funcProperties":{"__isSmartRef__":true,"id":749},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"748":{"this":{"__isSmartRef__":true,"id":202}},"749":{},"750":{"varMapping":{"__isSmartRef__":true,"id":751},"source":"function getURLForCategoryNamed(categoryName) {\n\tvar relative = this.categories[categoryName];\n\tif (!relative) return null;\n\treturn URL.ensureAbsoluteCodeBaseURL(relative).withRelativePartsResolved()\n}","funcProperties":{"__isSmartRef__":true,"id":752},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"751":{"this":{"__isSmartRef__":true,"id":202}},"752":{},"753":{"varMapping":{"__isSmartRef__":true,"id":754},"source":"function setSelectedPartItem(item) {\n\tthis.selectedPartItem = item;\n\tthis.get('selectedPartComment').textString = '';\n\tthis.get('selectedPartVersions').updateList(item ? ['Loading versions...']: []);\n\tthis.get('selectedPartVersions').setSelection(null);\n\tif (!item) {\n\t\tthis.get('selectedPartName').textString = 'nothing selected'\n\t\treturn;\n\t}\n\tthis.get('selectedPartName').textString = item.name\n\n\t// load versions\n\tconnect(item, 'partVersions', this.get('selectedPartVersions'), 'updateList');\n\titem.loadPartVersions(true);\n\n\t// load meta info\n\tconnect(item, 'loadedMetaInfo', this, 'setMetaInfoOfSelectedItem');\n\titem.loadPartMetaInfo(true);\n}","funcProperties":{"__isSmartRef__":true,"id":755},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"754":{"this":{"__isSmartRef__":true,"id":202}},"755":{},"756":{"varMapping":{"__isSmartRef__":true,"id":757},"source":"function makeUpPartNameFor(name) {\n\tif (!$morph(name)) return name;\n\tvar i = 2\n\twhile($morph(name + i)) { i++}\n\treturn name + i;\n}","funcProperties":{"__isSmartRef__":true,"id":758},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"757":{"this":{"__isSmartRef__":true,"id":202}},"758":{},"759":{"varMapping":{"__isSmartRef__":true,"id":760},"source":"function openPart(partMorph) {\n\tpartMorph.setName(this.makeUpPartNameFor(partMorph.getName()));\n\tlively.morphic.World.current().firstHand().grabMorph(partMorph, null);\n\tpartMorph.setPosition(pt(0,0));\n\t// partMorph.forceRestartAllActiveScripts();\n}","funcProperties":{"__isSmartRef__":true,"id":761},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"760":{"this":{"__isSmartRef__":true,"id":202}},"761":{},"762":{"varMapping":{"__isSmartRef__":true,"id":763},"source":"function interactivelyRemoveSelectedPartItem(partMorph) {\n\tvar item = this.selectedPartItem;\n\tif (!item) return;\n\tthis.world().confirm(\"really delete \" + item.name + \" in PartsBin?\", function(answer) {\n\t\tif (!answer) return;\n\t\titem.del();\n\t\tthis.reloadEverything();\n\t\talertOK(\"deleted \" + item.name);\n\t}.bind(this))\n}","funcProperties":{"__isSmartRef__":true,"id":764},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"763":{"this":{"__isSmartRef__":true,"id":202}},"764":{},"765":{"varMapping":{"__isSmartRef__":true,"id":766},"source":"function loadAndOpenSelectedPartItem(partMorph) {\n\tvar item = this.selectedPartItem;\n\tif (!item) return;\n\tconnect(item, 'part', this, 'openPart');\n\tvar selectedVersion = this.get('selectedPartVersions').selection,\n\t\trev = selectedVersion ? selectedVersion.rev : null;\n\titem.loadPart(true, null, rev);\n\talert('loading ' + item.name + '...');\n}","funcProperties":{"__isSmartRef__":true,"id":767},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"766":{"this":{"__isSmartRef__":true,"id":202}},"767":{},"768":{"varMapping":{"__isSmartRef__":true,"id":769},"source":"function addCategory(categoryName) {\n\tvar url = this.defaultPartsBinURL().withFilename(categoryName)\n\tthis.addExternalCategory(categoryName, url, true);\n}","funcProperties":{"__isSmartRef__":true,"id":770},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"769":{"this":{"__isSmartRef__":true,"id":202}},"770":{},"771":{"varMapping":{"__isSmartRef__":true,"id":772},"source":"function addCategoryInteractively() {\n\tvar partsBin = this, world = this.world();\n\tworld.prompt('Name of new category?', function(categoryName) {\n\t\tif (!categoryName || categoryName == '') {\n\t\t\talert('no category created!')\n\t\t\treturn;\n\t\t}\n\t\tpartsBin.addCategory(categoryName)\n\t})\t\n}","funcProperties":{"__isSmartRef__":true,"id":773},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"772":{"this":{"__isSmartRef__":true,"id":202}},"773":{},"774":{"varMapping":{"__isSmartRef__":true,"id":775},"source":"function addExternalCategory(categoryName, url, createPath) {\n\turl = url.asDirectory();\n\tthis.categories[categoryName] = url;\n\tif (createPath) {\n\t\tthis.getPartsSpaceForCategory(categoryName).ensureExistance();\n\t}\n\tthis.updateCategoryList(categoryName)\n}","funcProperties":{"__isSmartRef__":true,"id":776},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"775":{"this":{"__isSmartRef__":true,"id":202}},"776":{},"777":{"varMapping":{"__isSmartRef__":true,"id":778},"source":"function removeCategory(categoryName) {\n\t// categoryName = this.categoryName\n\tvar url = this.getURLForCategoryNamed(categoryName);\n\tif (!url) {\n\t\talert('No category ' + categoryName + ' exists! Doing nothing')\n\t\treturn;\n\t}\n\tvar webR = new WebResource(url);\n\tif (!webR.exists()) {\n\t\talert('Does not exist: ' + url);\n\t\tdelete this.categories[categoryName];\n\t\tlively.PartsBin.removePartsSpace(name);\n\t\tthis.updateCategoryList();\n\t\treturn\n\t}\n\twebR.getSubElements()\n\tif (!webR.subDocuments || webR.subDocuments.length > 0 ||\n\t\t\t !webR.subCollections || webR.subCollections.length > 0) {\n\t\talert('Will not remove directory ' + url + ' because it is not empty')\n\t} else {\n\t\twebR.del();\n\t\talertOK('Removed ' + categoryName + ' url ' + url);\n\t}\n\tdelete this.categories[categoryName];\n\tlively.PartsBin.removePartsSpace(name);\n\tthis.updateCategoryList();\n}","funcProperties":{"__isSmartRef__":true,"id":779},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"778":{"this":{"__isSmartRef__":true,"id":202}},"779":{},"780":{"varMapping":{"__isSmartRef__":true,"id":781},"source":"function removeCategoryInteractively() {\n\tvar partsBin = this, world = this.world();\n\tworld.confirm('Really remove ' + this.categoryName + '?', function(result) {\n\t\tif (!result) {\n\t\t\talert('no category removed!')\n\t\t\treturn;\n\t\t}\n\t\tpartsBin.removeCategory(partsBin.categoryName)\n\t})\t\n}","funcProperties":{"__isSmartRef__":true,"id":782},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"781":{"this":{"__isSmartRef__":true,"id":202}},"782":{},"783":{"varMapping":{"__isSmartRef__":true,"id":784},"source":"function interactivelyMoveSelectedPartItem(partMorph) {\n\tvar partItem = this.selectedPartItem, categories = this.categories, self = this;\n\tif (!partItem) { alert('no item selected'); return }\n\tvar items = Properties.own(categories).collect(function(catName) {\n\t\treturn [catName, function() {\n\t\t\tvar url = new URL(categories[catName]);\n\t\t\tvar partsSpace = lively.PartsBin.partsSpaceWithURL(url)\n\t\t\tpartItem.moveToPartsSpace(partsSpace);\n\t\t\tself.reloadEverything();\n\t\t\talertOK('Moved ' + partItem.name + ' to ' + url);\n\t\t}]\n\t})\n\tlively.morphic.Menu.openAtHand('Select category', items);\n}","funcProperties":{"__isSmartRef__":true,"id":785},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"784":{"this":{"__isSmartRef__":true,"id":202}},"785":{},"786":{"varMapping":{"__isSmartRef__":true,"id":787},"source":"function setMetaInfoOfSelectedItem(metaInfo) {\n\tvar comment = (metaInfo && metaInfo.getComment()) || 'No comment yet';\n\tthis.get('selectedPartComment').textString = comment;\n}","funcProperties":{"__isSmartRef__":true,"id":788},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"787":{"this":{"__isSmartRef__":true,"id":202}},"788":{},"789":{"varMapping":{"__isSmartRef__":true,"id":790},"source":"function saveCommentForSelectedPartItem(comment) {\n\tif (!this.selectedPartItem) {\n\t\talert('no part item selected!')\n\t\treturn;\n\t}\n\tvar metaInfo = this.selectedPartItem.getMetaInfo();\n\tmetaInfo.setComment(comment);\n\tthis.selectedPartItem.uploadMetaInfoOnly();\n}","funcProperties":{"__isSmartRef__":true,"id":791},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"790":{"this":{"__isSmartRef__":true,"id":202}},"791":{},"792":{"submorphs":[{"__isSmartRef__":true,"id":793},{"__isSmartRef__":true,"id":805},{"__isSmartRef__":true,"id":849},{"__isSmartRef__":true,"id":881}],"scripts":[],"id":1425,"shape":{"__isSmartRef__":true,"id":914},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":927},"_Position":{"__isSmartRef__":true,"id":928},"eventsAreIgnored":true,"_HandStyle":"default","windowMorph":{"__isSmartRef__":true,"id":201},"label":{"__isSmartRef__":true,"id":793},"closeButton":{"__isSmartRef__":true,"id":805},"menuButton":{"__isSmartRef__":true,"id":849},"collapseButton":{"__isSmartRef__":true,"id":881},"priorExtent":{"__isSmartRef__":true,"id":929},"owner":{"__isSmartRef__":true,"id":201},"__SourceModuleName__":"Global.lively.morphic.Widgets","renderContextTable":{"__isSmartRef__":true,"id":930},"eventHandler":{"__isSmartRef__":true,"id":931},"__LivelyClassName__":"lively.morphic.TitleBar"},"793":{"submorphs":[],"scripts":[],"id":1426,"shape":{"__isSmartRef__":true,"id":794},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":798},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","_Position":{"__isSmartRef__":true,"id":799},"priorExtent":{"__isSmartRef__":true,"id":800},"_MaxTextWidth":null,"_MaxTextHeight":17,"textChunks":[{"__isSmartRef__":true,"id":801}],"evalEnabled":false,"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":10,"_Align":"center","owner":{"__isSmartRef__":true,"id":792},"__SourceModuleName__":"Global.lively.morphic.TextCore","renderContextTable":{"__isSmartRef__":true,"id":803},"eventHandler":{"__isSmartRef__":true,"id":804},"__LivelyClassName__":"lively.morphic.Text"},"794":{"_Position":{"__isSmartRef__":true,"id":795},"_Extent":{"__isSmartRef__":true,"id":796},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":677},"_Fill":null,"_BorderRadius":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":797},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"795":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"796":{"x":916.1842763684606,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"797":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"798":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"799":{"x":20,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"800":{"x":916.1842763684606,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"801":{"style":{"__isSmartRef__":true,"id":802},"morph":{"__isSmartRef__":true,"id":793},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":793},"storedString":"PartsBinBrowser","__LivelyClassName__":"lively.morphic.TextChunk"},"802":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"803":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"804":{"morph":{"__isSmartRef__":true,"id":793},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"805":{"submorphs":[{"__isSmartRef__":true,"id":806}],"scripts":[],"id":1427,"shape":{"__isSmartRef__":true,"id":818},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Position":{"__isSmartRef__":true,"id":833},"priorExtent":{"__isSmartRef__":true,"id":834},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":822},"lighterFill":{"__isSmartRef__":true,"id":835},"label":{"__isSmartRef__":true,"id":806},"owner":{"__isSmartRef__":true,"id":792},"layout":{"__isSmartRef__":true,"id":844},"attributeConnections":[{"__isSmartRef__":true,"id":845},{"__isSmartRef__":true,"id":846}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","renderContextTable":{"__isSmartRef__":true,"id":847},"eventHandler":{"__isSmartRef__":true,"id":848},"__LivelyClassName__":"lively.morphic.WindowControl"},"806":{"submorphs":[],"scripts":[],"id":1428,"shape":{"__isSmartRef__":true,"id":807},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":811},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","_Position":{"__isSmartRef__":true,"id":812},"priorExtent":{"__isSmartRef__":true,"id":813},"_MaxTextWidth":null,"_MaxTextHeight":17,"textChunks":[{"__isSmartRef__":true,"id":814}],"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":805},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","renderContextTable":{"__isSmartRef__":true,"id":816},"eventHandler":{"__isSmartRef__":true,"id":817},"__LivelyClassName__":"lively.morphic.Text"},"807":{"_Position":{"__isSmartRef__":true,"id":808},"_Extent":{"__isSmartRef__":true,"id":809},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":677},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":810},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"808":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"809":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"810":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"811":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"812":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"813":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"814":{"style":{"__isSmartRef__":true,"id":815},"morph":{"__isSmartRef__":true,"id":806},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":806},"storedString":"X","__LivelyClassName__":"lively.morphic.TextChunk"},"815":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"816":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"817":{"morph":{"__isSmartRef__":true,"id":806},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"818":{"_Position":{"__isSmartRef__":true,"id":819},"_Extent":{"__isSmartRef__":true,"id":820},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":821},"_Fill":{"__isSmartRef__":true,"id":822},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":832},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"819":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"820":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"821":{"r":0.7411764705882353,"g":0.7450980392156863,"b":0.7529411764705882,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"822":{"stops":[{"__isSmartRef__":true,"id":823},{"__isSmartRef__":true,"id":825},{"__isSmartRef__":true,"id":827},{"__isSmartRef__":true,"id":829}],"vector":{"__isSmartRef__":true,"id":831},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"823":{"offset":0,"color":{"__isSmartRef__":true,"id":824}},"824":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"825":{"offset":0.4,"color":{"__isSmartRef__":true,"id":826}},"826":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"827":{"offset":0.6,"color":{"__isSmartRef__":true,"id":828}},"828":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"829":{"offset":1,"color":{"__isSmartRef__":true,"id":830}},"830":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"831":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"832":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"833":{"x":955.1842763684606,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"834":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"835":{"stops":[{"__isSmartRef__":true,"id":836},{"__isSmartRef__":true,"id":838},{"__isSmartRef__":true,"id":840},{"__isSmartRef__":true,"id":842}],"vector":{"__isSmartRef__":true,"id":831},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"836":{"offset":0,"color":{"__isSmartRef__":true,"id":837}},"837":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"838":{"offset":0.4,"color":{"__isSmartRef__":true,"id":839}},"839":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"840":{"offset":0.6,"color":{"__isSmartRef__":true,"id":841}},"841":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"842":{"offset":1,"color":{"__isSmartRef__":true,"id":843}},"843":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"844":{"moveHorizontal":true},"845":{"sourceObj":{"__isSmartRef__":true,"id":805},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":201},"targetMethodName":"getCloseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"846":{"sourceObj":{"__isSmartRef__":true,"id":805},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":201},"targetMethodName":"initiateShutdown","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"847":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"848":{"morph":{"__isSmartRef__":true,"id":805},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"849":{"submorphs":[{"__isSmartRef__":true,"id":850}],"scripts":[],"id":1429,"shape":{"__isSmartRef__":true,"id":862},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Position":{"__isSmartRef__":true,"id":866},"priorExtent":{"__isSmartRef__":true,"id":867},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":822},"lighterFill":{"__isSmartRef__":true,"id":868},"label":{"__isSmartRef__":true,"id":850},"owner":{"__isSmartRef__":true,"id":792},"attributeConnections":[{"__isSmartRef__":true,"id":877},{"__isSmartRef__":true,"id":878}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","renderContextTable":{"__isSmartRef__":true,"id":879},"eventHandler":{"__isSmartRef__":true,"id":880},"__LivelyClassName__":"lively.morphic.WindowControl"},"850":{"submorphs":[],"scripts":[],"id":1430,"shape":{"__isSmartRef__":true,"id":851},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":855},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","_Position":{"__isSmartRef__":true,"id":856},"priorExtent":{"__isSmartRef__":true,"id":857},"_MaxTextWidth":null,"_MaxTextHeight":17,"textChunks":[{"__isSmartRef__":true,"id":858}],"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":849},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","renderContextTable":{"__isSmartRef__":true,"id":860},"eventHandler":{"__isSmartRef__":true,"id":861},"__LivelyClassName__":"lively.morphic.Text"},"851":{"_Position":{"__isSmartRef__":true,"id":852},"_Extent":{"__isSmartRef__":true,"id":853},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":677},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":854},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"852":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"853":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"854":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"855":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"856":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"857":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"858":{"style":{"__isSmartRef__":true,"id":859},"morph":{"__isSmartRef__":true,"id":850},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":850},"storedString":"M","__LivelyClassName__":"lively.morphic.TextChunk"},"859":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"860":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"861":{"morph":{"__isSmartRef__":true,"id":850},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"862":{"_Position":{"__isSmartRef__":true,"id":863},"_Extent":{"__isSmartRef__":true,"id":864},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":821},"_Fill":{"__isSmartRef__":true,"id":822},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":865},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"863":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"864":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"865":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"866":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"867":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"868":{"stops":[{"__isSmartRef__":true,"id":869},{"__isSmartRef__":true,"id":871},{"__isSmartRef__":true,"id":873},{"__isSmartRef__":true,"id":875}],"vector":{"__isSmartRef__":true,"id":831},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"869":{"offset":0,"color":{"__isSmartRef__":true,"id":870}},"870":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"871":{"offset":0.4,"color":{"__isSmartRef__":true,"id":872}},"872":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"873":{"offset":0.6,"color":{"__isSmartRef__":true,"id":874}},"874":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"875":{"offset":1,"color":{"__isSmartRef__":true,"id":876}},"876":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"877":{"sourceObj":{"__isSmartRef__":true,"id":849},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":201},"targetMethodName":"getMenuHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"878":{"sourceObj":{"__isSmartRef__":true,"id":849},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":201},"targetMethodName":"showTargetMorphMenu","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"879":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"880":{"morph":{"__isSmartRef__":true,"id":849},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"881":{"submorphs":[{"__isSmartRef__":true,"id":882}],"scripts":[],"id":1431,"shape":{"__isSmartRef__":true,"id":894},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Position":{"__isSmartRef__":true,"id":898},"priorExtent":{"__isSmartRef__":true,"id":899},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":822},"lighterFill":{"__isSmartRef__":true,"id":900},"label":{"__isSmartRef__":true,"id":882},"owner":{"__isSmartRef__":true,"id":792},"layout":{"__isSmartRef__":true,"id":909},"attributeConnections":[{"__isSmartRef__":true,"id":910},{"__isSmartRef__":true,"id":911}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","renderContextTable":{"__isSmartRef__":true,"id":912},"eventHandler":{"__isSmartRef__":true,"id":913},"__LivelyClassName__":"lively.morphic.WindowControl"},"882":{"submorphs":[],"scripts":[],"id":1432,"shape":{"__isSmartRef__":true,"id":883},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":887},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","_Position":{"__isSmartRef__":true,"id":888},"priorExtent":{"__isSmartRef__":true,"id":889},"_MaxTextWidth":null,"_MaxTextHeight":17,"textChunks":[{"__isSmartRef__":true,"id":890}],"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":881},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","renderContextTable":{"__isSmartRef__":true,"id":892},"eventHandler":{"__isSmartRef__":true,"id":893},"__LivelyClassName__":"lively.morphic.Text"},"883":{"_Position":{"__isSmartRef__":true,"id":884},"_Extent":{"__isSmartRef__":true,"id":885},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":677},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":886},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"884":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"885":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"886":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"887":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"888":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"889":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"890":{"style":{"__isSmartRef__":true,"id":891},"morph":{"__isSmartRef__":true,"id":882},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":882},"storedString":"–","__LivelyClassName__":"lively.morphic.TextChunk"},"891":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"892":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"893":{"morph":{"__isSmartRef__":true,"id":882},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"894":{"_Position":{"__isSmartRef__":true,"id":895},"_Extent":{"__isSmartRef__":true,"id":896},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":821},"_Fill":{"__isSmartRef__":true,"id":822},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":897},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"895":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"896":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"897":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"898":{"x":936.1842763684606,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"899":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"900":{"stops":[{"__isSmartRef__":true,"id":901},{"__isSmartRef__":true,"id":903},{"__isSmartRef__":true,"id":905},{"__isSmartRef__":true,"id":907}],"vector":{"__isSmartRef__":true,"id":831},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"901":{"offset":0,"color":{"__isSmartRef__":true,"id":902}},"902":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"903":{"offset":0.4,"color":{"__isSmartRef__":true,"id":904}},"904":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"905":{"offset":0.6,"color":{"__isSmartRef__":true,"id":906}},"906":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"907":{"offset":1,"color":{"__isSmartRef__":true,"id":908}},"908":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"909":{"moveHorizontal":true},"910":{"sourceObj":{"__isSmartRef__":true,"id":881},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":201},"targetMethodName":"getCollapseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"911":{"sourceObj":{"__isSmartRef__":true,"id":881},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":201},"targetMethodName":"toggleCollapse","converter":null,"converterString":null,"updater":null,"updaterString":null,"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"912":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"913":{"morph":{"__isSmartRef__":true,"id":881},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"914":{"_Position":{"__isSmartRef__":true,"id":915},"_Extent":{"__isSmartRef__":true,"id":916},"_BorderWidth":2,"_BorderColor":{"__isSmartRef__":true,"id":917},"_Fill":{"__isSmartRef__":true,"id":918},"_StrokeOpacity":1,"_BorderRadius":"8px 8px 0px 0px","__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":926},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"915":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"916":{"x":975.1842763684606,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"917":{"r":0.4,"g":0.4,"b":0.4,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"918":{"stops":[{"__isSmartRef__":true,"id":919},{"__isSmartRef__":true,"id":921},{"__isSmartRef__":true,"id":923}],"vector":{"__isSmartRef__":true,"id":925},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"919":{"offset":0,"color":{"__isSmartRef__":true,"id":920}},"920":{"r":0.7200000000000001,"g":0.7200000000000001,"b":0.7200000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"921":{"offset":0.6,"color":{"__isSmartRef__":true,"id":922}},"922":{"r":0.9,"g":0.9,"b":0.9,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"923":{"offset":1,"color":{"__isSmartRef__":true,"id":924}},"924":{"r":0.7200000000000001,"g":0.7200000000000001,"b":0.7200000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"925":{"x":0,"y":1,"width":0,"height":-1,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"926":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"927":{"resizeWidth":true,"adjustForNewBounds":true},"928":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"929":{"x":975.1842763684606,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"930":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"931":{"morph":{"__isSmartRef__":true,"id":792},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"932":{"submorphs":[],"scripts":[],"id":1433,"shape":{"__isSmartRef__":true,"id":933},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"_Position":{"__isSmartRef__":true,"id":939},"showsHalos":false,"name":"ResizeCorner1","partsBinMetaInfo":{"__isSmartRef__":true,"id":940},"__SourceModuleName__":"Global.lively.morphic.Core","_Rotation":0,"_Scale":1,"draggingEnabled":true,"dragStartPoint":null,"originalExtent":{"__isSmartRef__":true,"id":941},"originalTargetExtent":null,"owner":{"__isSmartRef__":true,"id":201},"renderContextTable":{"__isSmartRef__":true,"id":942},"eventHandler":{"__isSmartRef__":true,"id":943},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":944},"__LivelyClassName__":"lively.morphic.Box"},"933":{"position":{"__isSmartRef__":true,"id":934},"_Extent":{"__isSmartRef__":true,"id":935},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":936},"_Fill":{"__isSmartRef__":true,"id":937},"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":938},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"934":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"935":{"x":13,"y":15,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"936":{"r":0.568,"g":0.568,"b":0.568,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"937":{"r":0.258,"g":0.258,"b":0.258,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"938":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"939":{"x":962.1842763684606,"y":509.01402102803513,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"940":{"partsSpaceName":"PartsBin/Widgets/","__SourceModuleName__":"Global.lively.PartsBin","migrationLevel":2,"comment":"Resize an object without using halos.","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"941":{"x":239,"y":138,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"942":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"943":{"morph":{"__isSmartRef__":true,"id":932},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"944":{"onDrag":{"__isSmartRef__":true,"id":945},"onDragEnd":{"__isSmartRef__":true,"id":952},"onDragStart":{"__isSmartRef__":true,"id":959}},"945":{"varMapping":{"__isSmartRef__":true,"id":946},"source":"function onDrag(evt) {\n\t// alert(\"onDrag\")\n\t\tvar moveDelta = evt.mousePoint.subPt(this.dragStartPoint)\n\t\tif (evt.isShiftDown()) {\n\t\t\tvar maxDelta = Math.max(moveDelta.x, moveDelta.y);\n\t\t\tmoveDelta = pt(maxDelta, maxDelta);\n\t\t}\n\t\tthis.owner.setExtent(this.originalTargetExtent.addPt(moveDelta));\n\t\tthis.align(this.bounds().bottomRight(), this.owner.getExtent())\n}","funcProperties":{"__isSmartRef__":true,"id":951},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"946":{"this":{"__isSmartRef__":true,"id":932},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":947}},"947":{"$super":{"__isSmartRef__":true,"id":948}},"948":{"varMapping":{"__isSmartRef__":true,"id":949},"source":"function () {\n\t\t\t\ttry {\n\t\t\t\t\treturn obj.constructor.prototype[name].apply(obj, arguments)\n\t\t\t\t} catch(e) {\n\t\t\t\t\talert('Error in $super call: ' + e + '\\n' + e.stack);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}","funcProperties":{"__isSmartRef__":true,"id":950},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"949":{"obj":{"__isSmartRef__":true,"id":932},"name":"onDrag"},"950":{},"951":{},"952":{"varMapping":{"__isSmartRef__":true,"id":953},"source":"function onDragEnd(evt) {\n\tthis.dragStartPoint = null;\n\tthis.originalTargetExtent = null;\n}","funcProperties":{"__isSmartRef__":true,"id":958},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"953":{"this":{"__isSmartRef__":true,"id":932},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":954}},"954":{"$super":{"__isSmartRef__":true,"id":955}},"955":{"varMapping":{"__isSmartRef__":true,"id":956},"source":"function () {\n\t\t\t\ttry {\n\t\t\t\t\treturn obj.constructor.prototype[name].apply(obj, arguments)\n\t\t\t\t} catch(e) {\n\t\t\t\t\talert('Error in $super call: ' + e + '\\n' + e.stack);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}","funcProperties":{"__isSmartRef__":true,"id":957},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"956":{"obj":{"__isSmartRef__":true,"id":932},"name":"onDragEnd"},"957":{},"958":{},"959":{"varMapping":{"__isSmartRef__":true,"id":960},"source":"function onDragStart(evt) {\n\tthis.dragStartPoint = evt.mousePoint;\n\tthis.originalTargetExtent = this.owner.getExtent();\n}","funcProperties":{"__isSmartRef__":true,"id":965},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"960":{"this":{"__isSmartRef__":true,"id":932},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":961}},"961":{"$super":{"__isSmartRef__":true,"id":962}},"962":{"varMapping":{"__isSmartRef__":true,"id":963},"source":"function () {\n\t\t\t\ttry {\n\t\t\t\t\treturn obj.constructor.prototype[name].apply(obj, arguments)\n\t\t\t\t} catch(e) {\n\t\t\t\t\talert('Error in $super call: ' + e + '\\n' + e.stack);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}","funcProperties":{"__isSmartRef__":true,"id":964},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"963":{"obj":{"__isSmartRef__":true,"id":932},"name":"onDragStart"},"964":{},"965":{},"966":{"_BorderWidth":0,"_Fill":null,"_StrokeOpacity":0,"_BorderRadius":0,"_Extent":{"__isSmartRef__":true,"id":967},"__SourceModuleName__":"Global.lively.morphic.Shapes","renderContextTable":{"__isSmartRef__":true,"id":968},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"967":{"x":975.1842763684606,"y":524.0140210280351,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"968":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"969":{"adjustForNewBounds":true},"970":{"x":864.7285924563203,"y":105.21031542052563,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"971":{"x":975.1842763684606,"y":524.0140210280351,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"972":{"x":1291.5818721624528,"y":101.20230340450561,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"973":{"partsSpaceName":"PartsBin/Tools","__SourceModuleName__":"Global.lively.PartsBin","requiredModules":["lively.PartsBin"],"migrationLevel":2,"comment":"Browser for a Parts repository.","__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo"},"974":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"975":{"morph":{"__isSmartRef__":true,"id":201},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"976":{"onLoadFromPartsBin":{"__isSmartRef__":true,"id":977}},"977":{"varMapping":{"__isSmartRef__":true,"id":978},"source":"function onLoadFromPartsBin() {\n\t$super();\n\tthis.targetMorph.reloadEverything();\n}","funcProperties":{"__isSmartRef__":true,"id":983},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"978":{"this":{"__isSmartRef__":true,"id":201},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":979}},"979":{"$super":{"__isSmartRef__":true,"id":980}},"980":{"varMapping":{"__isSmartRef__":true,"id":981},"source":"function () {\n\t\t\t\ttry {\n\t\t\t\t\treturn obj.constructor.prototype[name].apply(obj, arguments)\n\t\t\t\t} catch(e) {\n\t\t\t\t\talert('Error in $super call: ' + e + '\\n' + e.stack);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}","funcProperties":{"__isSmartRef__":true,"id":982},"__SourceModuleName__":"Global","__LivelyClassName__":"lively.Closure"},"981":{"obj":{"__isSmartRef__":true,"id":201},"name":"onLoadFromPartsBin"},"982":{},"983":{},"984":{"submorphs":[{"__isSmartRef__":true,"id":985},{"__isSmartRef__":true,"id":1123}],"scripts":[],"id":1545,"renderContextTable":{"__isSmartRef__":true,"id":1763},"shape":{"__isSmartRef__":true,"id":1764},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"layout":{"__isSmartRef__":true,"id":1767},"eventHandler":{"__isSmartRef__":true,"id":1768},"LK2":true,"_Position":{"__isSmartRef__":true,"id":1769},"priorExtent":{"__isSmartRef__":true,"id":1770},"targetMorph":{"__isSmartRef__":true,"id":1123},"titleBar":{"__isSmartRef__":true,"id":985},"contentOffset":{"__isSmartRef__":true,"id":1762},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"prevDragPos":{"__isSmartRef__":true,"id":1771},"highlighted":true,"_Rotation":0,"_Scale":1,"cameForward":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"985":{"submorphs":[{"__isSmartRef__":true,"id":986},{"__isSmartRef__":true,"id":998},{"__isSmartRef__":true,"id":1044},{"__isSmartRef__":true,"id":1078}],"scripts":[],"id":1546,"renderContextTable":{"__isSmartRef__":true,"id":1113},"shape":{"__isSmartRef__":true,"id":1114},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":1119},"eventHandler":{"__isSmartRef__":true,"id":1120},"_Position":{"__isSmartRef__":true,"id":1121},"eventsAreIgnored":true,"_HandStyle":"default","windowMorph":{"__isSmartRef__":true,"id":984},"label":{"__isSmartRef__":true,"id":986},"closeButton":{"__isSmartRef__":true,"id":998},"menuButton":{"__isSmartRef__":true,"id":1044},"collapseButton":{"__isSmartRef__":true,"id":1078},"priorExtent":{"__isSmartRef__":true,"id":1122},"owner":{"__isSmartRef__":true,"id":984},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"986":{"submorphs":[],"scripts":[],"id":1547,"renderContextTable":{"__isSmartRef__":true,"id":987},"textChunks":[{"__isSmartRef__":true,"id":988}],"shape":{"__isSmartRef__":true,"id":990},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":994},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":995},"_Position":{"__isSmartRef__":true,"id":996},"priorExtent":{"__isSmartRef__":true,"id":997},"_MaxTextWidth":null,"_MaxTextHeight":14,"evalEnabled":false,"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":10,"_Align":"center","owner":{"__isSmartRef__":true,"id":985},"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"987":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"988":{"style":{"__isSmartRef__":true,"id":989},"morph":{"__isSmartRef__":true,"id":986},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":986},"storedString":"Tests.js:lively.morphic.Tests.LayoutTests:-- all --:test01DropJournalLayoutOnMorph (proto)","__LivelyClassName__":"lively.morphic.TextChunk"},"989":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"990":{"_Position":{"__isSmartRef__":true,"id":991},"renderContextTable":{"__isSmartRef__":true,"id":992},"_Extent":{"__isSmartRef__":true,"id":993},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"_BorderRadius":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"991":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"992":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"993":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"994":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"995":{"morph":{"__isSmartRef__":true,"id":986},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"996":{"x":20,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"997":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"998":{"submorphs":[{"__isSmartRef__":true,"id":999}],"scripts":[],"id":1548,"renderContextTable":{"__isSmartRef__":true,"id":1011},"shape":{"__isSmartRef__":true,"id":1012},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1027},"_Position":{"__isSmartRef__":true,"id":1028},"priorExtent":{"__isSmartRef__":true,"id":1029},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":1030},"label":{"__isSmartRef__":true,"id":999},"owner":{"__isSmartRef__":true,"id":985},"layout":{"__isSmartRef__":true,"id":1039},"attributeConnections":[{"__isSmartRef__":true,"id":1040},{"__isSmartRef__":true,"id":1042}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"999":{"submorphs":[],"scripts":[],"id":1549,"renderContextTable":{"__isSmartRef__":true,"id":1000},"textChunks":[{"__isSmartRef__":true,"id":1001}],"shape":{"__isSmartRef__":true,"id":1003},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1007},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1008},"_Position":{"__isSmartRef__":true,"id":1009},"priorExtent":{"__isSmartRef__":true,"id":1010},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":998},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1000":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1001":{"style":{"__isSmartRef__":true,"id":1002},"morph":{"__isSmartRef__":true,"id":999},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":999},"storedString":"X","__LivelyClassName__":"lively.morphic.TextChunk"},"1002":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1003":{"_Position":{"__isSmartRef__":true,"id":1004},"renderContextTable":{"__isSmartRef__":true,"id":1005},"_Extent":{"__isSmartRef__":true,"id":1006},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1004":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1005":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1006":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1007":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1008":{"morph":{"__isSmartRef__":true,"id":999},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1009":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1010":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1011":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1012":{"_Position":{"__isSmartRef__":true,"id":1013},"renderContextTable":{"__isSmartRef__":true,"id":1014},"_Extent":{"__isSmartRef__":true,"id":1015},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1013":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1014":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1015":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1016":{"r":0.7411764705882353,"g":0.7450980392156863,"b":0.7529411764705882,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1017":{"stops":[{"__isSmartRef__":true,"id":1018},{"__isSmartRef__":true,"id":1020},{"__isSmartRef__":true,"id":1022},{"__isSmartRef__":true,"id":1024}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1018":{"offset":0,"color":{"__isSmartRef__":true,"id":1019}},"1019":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1020":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1021}},"1021":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1022":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1023}},"1023":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1024":{"offset":1,"color":{"__isSmartRef__":true,"id":1025}},"1025":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1026":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1027":{"morph":{"__isSmartRef__":true,"id":998},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1028":{"x":800,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1029":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1030":{"stops":[{"__isSmartRef__":true,"id":1031},{"__isSmartRef__":true,"id":1033},{"__isSmartRef__":true,"id":1035},{"__isSmartRef__":true,"id":1037}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1031":{"offset":0,"color":{"__isSmartRef__":true,"id":1032}},"1032":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1033":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1034}},"1034":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1035":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1036}},"1036":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1037":{"offset":1,"color":{"__isSmartRef__":true,"id":1038}},"1038":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1039":{"moveHorizontal":true},"1040":{"sourceObj":{"__isSmartRef__":true,"id":998},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":984},"targetMethodName":"getCloseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1041},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1041":{"source":{"__isSmartRef__":true,"id":998},"target":{"__isSmartRef__":true,"id":984}},"1042":{"sourceObj":{"__isSmartRef__":true,"id":998},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":984},"targetMethodName":"initiateShutdown","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1043},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1043":{"source":{"__isSmartRef__":true,"id":998},"target":{"__isSmartRef__":true,"id":984}},"1044":{"submorphs":[{"__isSmartRef__":true,"id":1045}],"scripts":[],"id":1550,"renderContextTable":{"__isSmartRef__":true,"id":1057},"shape":{"__isSmartRef__":true,"id":1058},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1062},"_Position":{"__isSmartRef__":true,"id":1063},"priorExtent":{"__isSmartRef__":true,"id":1064},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":1065},"label":{"__isSmartRef__":true,"id":1045},"owner":{"__isSmartRef__":true,"id":985},"attributeConnections":[{"__isSmartRef__":true,"id":1074},{"__isSmartRef__":true,"id":1076}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1045":{"submorphs":[],"scripts":[],"id":1551,"renderContextTable":{"__isSmartRef__":true,"id":1046},"textChunks":[{"__isSmartRef__":true,"id":1047}],"shape":{"__isSmartRef__":true,"id":1049},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1053},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1054},"_Position":{"__isSmartRef__":true,"id":1055},"priorExtent":{"__isSmartRef__":true,"id":1056},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1044},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1046":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1047":{"style":{"__isSmartRef__":true,"id":1048},"morph":{"__isSmartRef__":true,"id":1045},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1045},"storedString":"M","__LivelyClassName__":"lively.morphic.TextChunk"},"1048":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1049":{"_Position":{"__isSmartRef__":true,"id":1050},"renderContextTable":{"__isSmartRef__":true,"id":1051},"_Extent":{"__isSmartRef__":true,"id":1052},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1050":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1051":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1052":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1053":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1054":{"morph":{"__isSmartRef__":true,"id":1045},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1055":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1056":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1057":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1058":{"_Position":{"__isSmartRef__":true,"id":1059},"renderContextTable":{"__isSmartRef__":true,"id":1060},"_Extent":{"__isSmartRef__":true,"id":1061},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1059":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1060":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1061":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1062":{"morph":{"__isSmartRef__":true,"id":1044},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1063":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1064":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1065":{"stops":[{"__isSmartRef__":true,"id":1066},{"__isSmartRef__":true,"id":1068},{"__isSmartRef__":true,"id":1070},{"__isSmartRef__":true,"id":1072}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1066":{"offset":0,"color":{"__isSmartRef__":true,"id":1067}},"1067":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1068":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1069}},"1069":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1070":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1071}},"1071":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1072":{"offset":1,"color":{"__isSmartRef__":true,"id":1073}},"1073":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1074":{"sourceObj":{"__isSmartRef__":true,"id":1044},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":984},"targetMethodName":"getMenuHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1075},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1075":{"source":{"__isSmartRef__":true,"id":1044},"target":{"__isSmartRef__":true,"id":984}},"1076":{"sourceObj":{"__isSmartRef__":true,"id":1044},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":984},"targetMethodName":"showTargetMorphMenu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1077},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1077":{"source":{"__isSmartRef__":true,"id":1044},"target":{"__isSmartRef__":true,"id":984}},"1078":{"submorphs":[{"__isSmartRef__":true,"id":1079}],"scripts":[],"id":1552,"renderContextTable":{"__isSmartRef__":true,"id":1091},"shape":{"__isSmartRef__":true,"id":1092},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1096},"_Position":{"__isSmartRef__":true,"id":1097},"priorExtent":{"__isSmartRef__":true,"id":1098},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":1099},"label":{"__isSmartRef__":true,"id":1079},"owner":{"__isSmartRef__":true,"id":985},"layout":{"__isSmartRef__":true,"id":1108},"attributeConnections":[{"__isSmartRef__":true,"id":1109},{"__isSmartRef__":true,"id":1111}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1079":{"submorphs":[],"scripts":[],"id":1553,"renderContextTable":{"__isSmartRef__":true,"id":1080},"textChunks":[{"__isSmartRef__":true,"id":1081}],"shape":{"__isSmartRef__":true,"id":1083},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1087},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1088},"_Position":{"__isSmartRef__":true,"id":1089},"priorExtent":{"__isSmartRef__":true,"id":1090},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1078},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1080":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1081":{"style":{"__isSmartRef__":true,"id":1082},"morph":{"__isSmartRef__":true,"id":1079},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1079},"storedString":"–","__LivelyClassName__":"lively.morphic.TextChunk"},"1082":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1083":{"_Position":{"__isSmartRef__":true,"id":1084},"renderContextTable":{"__isSmartRef__":true,"id":1085},"_Extent":{"__isSmartRef__":true,"id":1086},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1084":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1085":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1086":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1087":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1088":{"morph":{"__isSmartRef__":true,"id":1079},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1089":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1090":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1091":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1092":{"_Position":{"__isSmartRef__":true,"id":1093},"renderContextTable":{"__isSmartRef__":true,"id":1094},"_Extent":{"__isSmartRef__":true,"id":1095},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1093":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1094":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1095":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1096":{"morph":{"__isSmartRef__":true,"id":1078},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1097":{"x":781,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1098":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1099":{"stops":[{"__isSmartRef__":true,"id":1100},{"__isSmartRef__":true,"id":1102},{"__isSmartRef__":true,"id":1104},{"__isSmartRef__":true,"id":1106}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1100":{"offset":0,"color":{"__isSmartRef__":true,"id":1101}},"1101":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1102":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1103}},"1103":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1104":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1105}},"1105":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1106":{"offset":1,"color":{"__isSmartRef__":true,"id":1107}},"1107":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1108":{"moveHorizontal":true},"1109":{"sourceObj":{"__isSmartRef__":true,"id":1078},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":984},"targetMethodName":"getCollapseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1110},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1110":{"source":{"__isSmartRef__":true,"id":1078},"target":{"__isSmartRef__":true,"id":984}},"1111":{"sourceObj":{"__isSmartRef__":true,"id":1078},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":984},"targetMethodName":"toggleCollapse","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1112},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1112":{"source":{"__isSmartRef__":true,"id":1078},"target":{"__isSmartRef__":true,"id":984}},"1113":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1114":{"_Position":{"__isSmartRef__":true,"id":1115},"renderContextTable":{"__isSmartRef__":true,"id":1116},"_Extent":{"__isSmartRef__":true,"id":1117},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1118},"_Fill":{"__isSmartRef__":true,"id":918},"_StrokeOpacity":1,"_BorderRadius":"8px 8px 0px 0px","__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1115":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1116":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1117":{"x":820,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1118":{"r":0.4,"g":0.4,"b":0.4,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1119":{"resizeWidth":true,"adjustForNewBounds":true},"1120":{"morph":{"__isSmartRef__":true,"id":985},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1121":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1122":{"x":820,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1123":{"submorphs":[{"__isSmartRef__":true,"id":1124},{"__isSmartRef__":true,"id":1662},{"__isSmartRef__":true,"id":1694},{"__isSmartRef__":true,"id":1397},{"__isSmartRef__":true,"id":1582},{"__isSmartRef__":true,"id":1601},{"__isSmartRef__":true,"id":1620},{"__isSmartRef__":true,"id":1726},{"__isSmartRef__":true,"id":1639},{"__isSmartRef__":true,"id":1735},{"__isSmartRef__":true,"id":1743},{"__isSmartRef__":true,"id":1141},{"__isSmartRef__":true,"id":1186},{"__isSmartRef__":true,"id":1220},{"__isSmartRef__":true,"id":1254},{"__isSmartRef__":true,"id":1288},{"__isSmartRef__":true,"id":1322},{"__isSmartRef__":true,"id":1356}],"scripts":[],"id":1,"renderContextTable":{"__isSmartRef__":true,"id":1754},"shape":{"__isSmartRef__":true,"id":1755},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":1760},"eventHandler":{"__isSmartRef__":true,"id":1761},"_Position":{"__isSmartRef__":true,"id":1762},"locationPane":{"__isSmartRef__":true,"id":1124},"codeBaseDirBtn":{"__isSmartRef__":true,"id":1662},"localDirBtn":{"__isSmartRef__":true,"id":1694},"Pane1":{"__isSmartRef__":true,"id":1397},"Pane2":{"__isSmartRef__":true,"id":1582},"Pane3":{"__isSmartRef__":true,"id":1601},"Pane4":{"__isSmartRef__":true,"id":1620},"midResizer":{"__isSmartRef__":true,"id":1726},"sourcePane":{"__isSmartRef__":true,"id":1639},"bottomResizer":{"__isSmartRef__":true,"id":1735},"commentPane":{"__isSmartRef__":true,"id":1743},"ownerWidget":{"__isSmartRef__":true,"id":1139},"owner":{"__isSmartRef__":true,"id":984},"__LivelyClassName__":"lively.ide.BrowserPanel","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1124":{"submorphs":[],"scripts":[],"id":2,"renderContextTable":{"__isSmartRef__":true,"id":1125},"textChunks":[{"__isSmartRef__":true,"id":1126}],"shape":{"__isSmartRef__":true,"id":1128},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1134},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1135},"_Position":{"__isSmartRef__":true,"id":1136},"priorExtent":{"__isSmartRef__":true,"id":1137},"_MaxTextWidth":656,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1123},"isInputLine":true,"noEval":true,"styleClass":["Browser_locationInput"],"attributeConnections":[{"__isSmartRef__":true,"id":1138}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1125":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1126":{"style":{"__isSmartRef__":true,"id":1127},"chunkOwner":{"__isSmartRef__":true,"id":1124},"storedString":"http://lively-kernel.org/repository/webwerkstatt/","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1127":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1128":{"_Position":{"__isSmartRef__":true,"id":1129},"renderContextTable":{"__isSmartRef__":true,"id":1130},"_Extent":{"__isSmartRef__":true,"id":1131},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1133},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1129":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1130":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1131":{"x":656,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1132":{"r":0,"g":0,"b":0,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1133":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1134":{"x":2,"y":1,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1135":{"morph":{"__isSmartRef__":true,"id":1124},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1136":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1137":{"x":656,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1138":{"sourceObj":{"__isSmartRef__":true,"id":1124},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setTargetURL","converter":null,"converterString":"function (value) { return new URL(value) }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1661},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1139":{"buttonCommands":[{"__isSmartRef__":true,"id":1140},{"__isSmartRef__":true,"id":1185},{"__isSmartRef__":true,"id":1219},{"__isSmartRef__":true,"id":1253},{"__isSmartRef__":true,"id":1287},{"__isSmartRef__":true,"id":1321},{"__isSmartRef__":true,"id":1355}],"RootFilters":[{"__isSmartRef__":true,"id":1389}],"Pane1Filters":[{"__isSmartRef__":true,"id":1390},{"__isSmartRef__":true,"id":1391}],"Pane2Filters":[{"__isSmartRef__":true,"id":1392}],"Pane3Filters":[{"__isSmartRef__":true,"id":1393}],"Pane4Filters":[{"__isSmartRef__":true,"id":1394}],"evaluate":true,"targetURL":{"__isSmartRef__":true,"id":1395},"panel":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1396},{"__isSmartRef__":true,"id":1581},{"__isSmartRef__":true,"id":1600},{"__isSmartRef__":true,"id":1619},{"__isSmartRef__":true,"id":1638},{"__isSmartRef__":true,"id":1656}],"SourceString":"-----","sourceString":"-----","doNotSerialize":["$$targetURL"],"doNotCopyProperties":["$$targetURL"],"_rootNode":{"__isSmartRef__":true,"id":1409},"Pane1Selection":null,"pane1Selection":null,"Pane2Selection":null,"pane2Selection":null,"Pane3Selection":null,"pane3Selection":null,"Pane4Selection":null,"pane4Selection":null,"Pane4Content":["-----"],"Pane3Content":["-----"],"Pane2Content":["-----"],"Pane1Content":[{"__isSmartRef__":true,"id":1406},{"__isSmartRef__":true,"id":1518},{"__isSmartRef__":true,"id":1519},{"__isSmartRef__":true,"id":1520},{"__isSmartRef__":true,"id":1521},{"__isSmartRef__":true,"id":1522},{"__isSmartRef__":true,"id":1523},{"__isSmartRef__":true,"id":1524},{"__isSmartRef__":true,"id":1525},{"__isSmartRef__":true,"id":1526},{"__isSmartRef__":true,"id":1527},{"__isSmartRef__":true,"id":1528},{"__isSmartRef__":true,"id":1529},{"__isSmartRef__":true,"id":1530},{"__isSmartRef__":true,"id":1531},{"__isSmartRef__":true,"id":1532},{"__isSmartRef__":true,"id":1533},{"__isSmartRef__":true,"id":1534},{"__isSmartRef__":true,"id":1535},{"__isSmartRef__":true,"id":1536},{"__isSmartRef__":true,"id":1537},{"__isSmartRef__":true,"id":1538},{"__isSmartRef__":true,"id":1539},{"__isSmartRef__":true,"id":1540},{"__isSmartRef__":true,"id":1541},{"__isSmartRef__":true,"id":1542},{"__isSmartRef__":true,"id":1543},{"__isSmartRef__":true,"id":1544},{"__isSmartRef__":true,"id":1545},{"__isSmartRef__":true,"id":1546},{"__isSmartRef__":true,"id":1547},{"__isSmartRef__":true,"id":1548},{"__isSmartRef__":true,"id":1549},{"__isSmartRef__":true,"id":1550},{"__isSmartRef__":true,"id":1551},{"__isSmartRef__":true,"id":1552},{"__isSmartRef__":true,"id":1553},{"__isSmartRef__":true,"id":1554},{"__isSmartRef__":true,"id":1555},{"__isSmartRef__":true,"id":1556},{"__isSmartRef__":true,"id":1557},{"__isSmartRef__":true,"id":1558},{"__isSmartRef__":true,"id":1559},{"__isSmartRef__":true,"id":1560},{"__isSmartRef__":true,"id":1561},{"__isSmartRef__":true,"id":1562},{"__isSmartRef__":true,"id":1563},{"__isSmartRef__":true,"id":1564},{"__isSmartRef__":true,"id":1565},{"__isSmartRef__":true,"id":1566},{"__isSmartRef__":true,"id":1567},{"__isSmartRef__":true,"id":1568},{"__isSmartRef__":true,"id":1569},{"__isSmartRef__":true,"id":1570},{"__isSmartRef__":true,"id":1571}],"__LivelyClassName__":"lively.ide.SystemBrowser","__SourceModuleName__":"Global.lively.ide.SystemCodeBrowser"},"1140":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1141},"__LivelyClassName__":"lively.ide.AddNewFileCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1141":{"submorphs":[{"__isSmartRef__":true,"id":1142}],"scripts":[],"id":15,"renderContextTable":{"__isSmartRef__":true,"id":1154},"shape":{"__isSmartRef__":true,"id":1155},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1170},"_Position":{"__isSmartRef__":true,"id":1171},"priorExtent":{"__isSmartRef__":true,"id":1172},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1173},"label":{"__isSmartRef__":true,"id":1142},"command":{"__isSmartRef__":true,"id":1140},"attributeConnections":[{"__isSmartRef__":true,"id":1182},{"__isSmartRef__":true,"id":1183}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1142":{"submorphs":[],"scripts":[],"id":16,"renderContextTable":{"__isSmartRef__":true,"id":1143},"textChunks":[{"__isSmartRef__":true,"id":1144}],"shape":{"__isSmartRef__":true,"id":1146},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1150},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1151},"_Position":{"__isSmartRef__":true,"id":1152},"priorExtent":{"__isSmartRef__":true,"id":1153},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1141},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1143":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1144":{"style":{"__isSmartRef__":true,"id":1145},"chunkOwner":{"__isSmartRef__":true,"id":1142},"storedString":"Add module","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1145":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1146":{"_Position":{"__isSmartRef__":true,"id":1147},"renderContextTable":{"__isSmartRef__":true,"id":1148},"_Extent":{"__isSmartRef__":true,"id":1149},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1147":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1148":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1149":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1150":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1151":{"morph":{"__isSmartRef__":true,"id":1142},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1152":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1153":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1154":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1155":{"_Position":{"__isSmartRef__":true,"id":1156},"renderContextTable":{"__isSmartRef__":true,"id":1157},"_Extent":{"__isSmartRef__":true,"id":1158},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1156":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1157":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1158":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1159":{"r":0.7411764705882353,"g":0.7450980392156863,"b":0.7529411764705882,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1160":{"stops":[{"__isSmartRef__":true,"id":1161},{"__isSmartRef__":true,"id":1163},{"__isSmartRef__":true,"id":1165},{"__isSmartRef__":true,"id":1167}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1161":{"offset":0,"color":{"__isSmartRef__":true,"id":1162}},"1162":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1163":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1164}},"1164":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1165":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1166}},"1166":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1167":{"offset":1,"color":{"__isSmartRef__":true,"id":1168}},"1168":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1169":{"x":0,"y":0,"width":0,"height":1,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1170":{"morph":{"__isSmartRef__":true,"id":1141},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1171":{"x":0,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1172":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1173":{"stops":[{"__isSmartRef__":true,"id":1174},{"__isSmartRef__":true,"id":1176},{"__isSmartRef__":true,"id":1178},{"__isSmartRef__":true,"id":1180}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1174":{"offset":0,"color":{"__isSmartRef__":true,"id":1175}},"1175":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1176":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1177}},"1177":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1178":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1179}},"1179":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1180":{"offset":1,"color":{"__isSmartRef__":true,"id":1181}},"1181":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1182":{"sourceObj":{"__isSmartRef__":true,"id":1141},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1140},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1183":{"sourceObj":{"__isSmartRef__":true,"id":1141},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1141},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1184},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1184":{"source":{"__isSmartRef__":true,"id":1141},"target":{"__isSmartRef__":true,"id":1141}},"1185":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1186},"__LivelyClassName__":"lively.ide.AllModulesLoadCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1186":{"submorphs":[{"__isSmartRef__":true,"id":1187}],"scripts":[],"id":17,"renderContextTable":{"__isSmartRef__":true,"id":1199},"shape":{"__isSmartRef__":true,"id":1200},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1204},"_Position":{"__isSmartRef__":true,"id":1205},"priorExtent":{"__isSmartRef__":true,"id":1206},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1207},"label":{"__isSmartRef__":true,"id":1187},"command":{"__isSmartRef__":true,"id":1185},"attributeConnections":[{"__isSmartRef__":true,"id":1216},{"__isSmartRef__":true,"id":1217}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1187":{"submorphs":[],"scripts":[],"id":18,"renderContextTable":{"__isSmartRef__":true,"id":1188},"textChunks":[{"__isSmartRef__":true,"id":1189}],"shape":{"__isSmartRef__":true,"id":1191},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1195},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1196},"_Position":{"__isSmartRef__":true,"id":1197},"priorExtent":{"__isSmartRef__":true,"id":1198},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1186},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1188":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1189":{"style":{"__isSmartRef__":true,"id":1190},"chunkOwner":{"__isSmartRef__":true,"id":1187},"storedString":"Load all","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1190":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1191":{"_Position":{"__isSmartRef__":true,"id":1192},"renderContextTable":{"__isSmartRef__":true,"id":1193},"_Extent":{"__isSmartRef__":true,"id":1194},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1192":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1193":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1194":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1195":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1196":{"morph":{"__isSmartRef__":true,"id":1187},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1197":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1198":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1199":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1200":{"_Position":{"__isSmartRef__":true,"id":1201},"renderContextTable":{"__isSmartRef__":true,"id":1202},"_Extent":{"__isSmartRef__":true,"id":1203},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1201":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1202":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1203":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1204":{"morph":{"__isSmartRef__":true,"id":1186},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1205":{"x":117.14285714285714,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1206":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1207":{"stops":[{"__isSmartRef__":true,"id":1208},{"__isSmartRef__":true,"id":1210},{"__isSmartRef__":true,"id":1212},{"__isSmartRef__":true,"id":1214}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1208":{"offset":0,"color":{"__isSmartRef__":true,"id":1209}},"1209":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1210":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1211}},"1211":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1212":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1213}},"1213":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1214":{"offset":1,"color":{"__isSmartRef__":true,"id":1215}},"1215":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1216":{"sourceObj":{"__isSmartRef__":true,"id":1186},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1185},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1217":{"sourceObj":{"__isSmartRef__":true,"id":1186},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1186},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1218},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1218":{"source":{"__isSmartRef__":true,"id":1186},"target":{"__isSmartRef__":true,"id":1186}},"1219":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1220},"__LivelyClassName__":"lively.ide.ShowLineNumbersCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1220":{"submorphs":[{"__isSmartRef__":true,"id":1221}],"scripts":[],"id":19,"renderContextTable":{"__isSmartRef__":true,"id":1233},"shape":{"__isSmartRef__":true,"id":1234},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1238},"_Position":{"__isSmartRef__":true,"id":1239},"priorExtent":{"__isSmartRef__":true,"id":1240},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1241},"label":{"__isSmartRef__":true,"id":1221},"command":{"__isSmartRef__":true,"id":1219},"attributeConnections":[{"__isSmartRef__":true,"id":1250},{"__isSmartRef__":true,"id":1251}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1221":{"submorphs":[],"scripts":[],"id":20,"renderContextTable":{"__isSmartRef__":true,"id":1222},"textChunks":[{"__isSmartRef__":true,"id":1223}],"shape":{"__isSmartRef__":true,"id":1225},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1229},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1230},"_Position":{"__isSmartRef__":true,"id":1231},"priorExtent":{"__isSmartRef__":true,"id":1232},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1220},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1222":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1223":{"style":{"__isSmartRef__":true,"id":1224},"chunkOwner":{"__isSmartRef__":true,"id":1221},"storedString":"LineNo","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1224":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1225":{"_Position":{"__isSmartRef__":true,"id":1226},"renderContextTable":{"__isSmartRef__":true,"id":1227},"_Extent":{"__isSmartRef__":true,"id":1228},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1226":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1227":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1228":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1229":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1230":{"morph":{"__isSmartRef__":true,"id":1221},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1231":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1232":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1233":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1234":{"_Position":{"__isSmartRef__":true,"id":1235},"renderContextTable":{"__isSmartRef__":true,"id":1236},"_Extent":{"__isSmartRef__":true,"id":1237},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1235":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1236":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1237":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1238":{"morph":{"__isSmartRef__":true,"id":1220},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1239":{"x":234.28571428571428,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1240":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1241":{"stops":[{"__isSmartRef__":true,"id":1242},{"__isSmartRef__":true,"id":1244},{"__isSmartRef__":true,"id":1246},{"__isSmartRef__":true,"id":1248}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1242":{"offset":0,"color":{"__isSmartRef__":true,"id":1243}},"1243":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1244":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1245}},"1245":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1246":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1247}},"1247":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1248":{"offset":1,"color":{"__isSmartRef__":true,"id":1249}},"1249":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1250":{"sourceObj":{"__isSmartRef__":true,"id":1220},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1219},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1251":{"sourceObj":{"__isSmartRef__":true,"id":1220},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1220},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1252},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1252":{"source":{"__isSmartRef__":true,"id":1220},"target":{"__isSmartRef__":true,"id":1220}},"1253":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1254},"__LivelyClassName__":"lively.ide.ParserDebugCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1254":{"submorphs":[{"__isSmartRef__":true,"id":1255}],"scripts":[],"id":21,"renderContextTable":{"__isSmartRef__":true,"id":1267},"shape":{"__isSmartRef__":true,"id":1268},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1272},"_Position":{"__isSmartRef__":true,"id":1273},"priorExtent":{"__isSmartRef__":true,"id":1274},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1275},"label":{"__isSmartRef__":true,"id":1255},"command":{"__isSmartRef__":true,"id":1253},"attributeConnections":[{"__isSmartRef__":true,"id":1284},{"__isSmartRef__":true,"id":1285}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1255":{"submorphs":[],"scripts":[],"id":22,"renderContextTable":{"__isSmartRef__":true,"id":1256},"textChunks":[{"__isSmartRef__":true,"id":1257}],"shape":{"__isSmartRef__":true,"id":1259},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1263},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1264},"_Position":{"__isSmartRef__":true,"id":1265},"priorExtent":{"__isSmartRef__":true,"id":1266},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1254},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1256":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1257":{"style":{"__isSmartRef__":true,"id":1258},"chunkOwner":{"__isSmartRef__":true,"id":1255},"storedString":"Dbg errors is off","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1258":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1259":{"_Position":{"__isSmartRef__":true,"id":1260},"renderContextTable":{"__isSmartRef__":true,"id":1261},"_Extent":{"__isSmartRef__":true,"id":1262},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1260":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1261":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1262":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1263":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1264":{"morph":{"__isSmartRef__":true,"id":1255},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1265":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1266":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1267":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1268":{"_Position":{"__isSmartRef__":true,"id":1269},"renderContextTable":{"__isSmartRef__":true,"id":1270},"_Extent":{"__isSmartRef__":true,"id":1271},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1269":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1270":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1271":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1272":{"morph":{"__isSmartRef__":true,"id":1254},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1273":{"x":351.42857142857144,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1274":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1275":{"stops":[{"__isSmartRef__":true,"id":1276},{"__isSmartRef__":true,"id":1278},{"__isSmartRef__":true,"id":1280},{"__isSmartRef__":true,"id":1282}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1276":{"offset":0,"color":{"__isSmartRef__":true,"id":1277}},"1277":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1278":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1279}},"1279":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1280":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1281}},"1281":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1282":{"offset":1,"color":{"__isSmartRef__":true,"id":1283}},"1283":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1284":{"sourceObj":{"__isSmartRef__":true,"id":1254},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1253},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1285":{"sourceObj":{"__isSmartRef__":true,"id":1254},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1254},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1286},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1286":{"source":{"__isSmartRef__":true,"id":1254},"target":{"__isSmartRef__":true,"id":1254}},"1287":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1288},"__LivelyClassName__":"lively.ide.EvaluateCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1288":{"submorphs":[{"__isSmartRef__":true,"id":1289}],"scripts":[],"id":23,"renderContextTable":{"__isSmartRef__":true,"id":1301},"shape":{"__isSmartRef__":true,"id":1302},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1306},"_Position":{"__isSmartRef__":true,"id":1307},"priorExtent":{"__isSmartRef__":true,"id":1308},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1309},"label":{"__isSmartRef__":true,"id":1289},"command":{"__isSmartRef__":true,"id":1287},"attributeConnections":[{"__isSmartRef__":true,"id":1318},{"__isSmartRef__":true,"id":1319}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1289":{"submorphs":[],"scripts":[],"id":24,"renderContextTable":{"__isSmartRef__":true,"id":1290},"textChunks":[{"__isSmartRef__":true,"id":1291}],"shape":{"__isSmartRef__":true,"id":1293},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1297},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1298},"_Position":{"__isSmartRef__":true,"id":1299},"priorExtent":{"__isSmartRef__":true,"id":1300},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1288},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1290":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1291":{"style":{"__isSmartRef__":true,"id":1292},"chunkOwner":{"__isSmartRef__":true,"id":1289},"storedString":"Eval on","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1292":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1293":{"_Position":{"__isSmartRef__":true,"id":1294},"renderContextTable":{"__isSmartRef__":true,"id":1295},"_Extent":{"__isSmartRef__":true,"id":1296},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1294":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1295":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1296":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1297":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1298":{"morph":{"__isSmartRef__":true,"id":1289},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1299":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1300":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1301":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1302":{"_Position":{"__isSmartRef__":true,"id":1303},"renderContextTable":{"__isSmartRef__":true,"id":1304},"_Extent":{"__isSmartRef__":true,"id":1305},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1303":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1304":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1305":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1306":{"morph":{"__isSmartRef__":true,"id":1288},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1307":{"x":468.57142857142856,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1308":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1309":{"stops":[{"__isSmartRef__":true,"id":1310},{"__isSmartRef__":true,"id":1312},{"__isSmartRef__":true,"id":1314},{"__isSmartRef__":true,"id":1316}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1310":{"offset":0,"color":{"__isSmartRef__":true,"id":1311}},"1311":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1312":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1313}},"1313":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1314":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1315}},"1315":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1316":{"offset":1,"color":{"__isSmartRef__":true,"id":1317}},"1317":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1318":{"sourceObj":{"__isSmartRef__":true,"id":1288},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1287},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1319":{"sourceObj":{"__isSmartRef__":true,"id":1288},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1288},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1320},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1320":{"source":{"__isSmartRef__":true,"id":1288},"target":{"__isSmartRef__":true,"id":1288}},"1321":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1322},"__LivelyClassName__":"lively.ide.SortCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1322":{"submorphs":[{"__isSmartRef__":true,"id":1323}],"scripts":[],"id":25,"renderContextTable":{"__isSmartRef__":true,"id":1335},"shape":{"__isSmartRef__":true,"id":1336},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1340},"_Position":{"__isSmartRef__":true,"id":1341},"priorExtent":{"__isSmartRef__":true,"id":1342},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1343},"label":{"__isSmartRef__":true,"id":1323},"command":{"__isSmartRef__":true,"id":1321},"attributeConnections":[{"__isSmartRef__":true,"id":1352},{"__isSmartRef__":true,"id":1353}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1323":{"submorphs":[],"scripts":[],"id":26,"renderContextTable":{"__isSmartRef__":true,"id":1324},"textChunks":[{"__isSmartRef__":true,"id":1325}],"shape":{"__isSmartRef__":true,"id":1327},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1331},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1332},"_Position":{"__isSmartRef__":true,"id":1333},"priorExtent":{"__isSmartRef__":true,"id":1334},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1322},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1324":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1325":{"style":{"__isSmartRef__":true,"id":1326},"chunkOwner":{"__isSmartRef__":true,"id":1323},"storedString":"Sort","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1326":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1327":{"_Position":{"__isSmartRef__":true,"id":1328},"renderContextTable":{"__isSmartRef__":true,"id":1329},"_Extent":{"__isSmartRef__":true,"id":1330},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1328":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1329":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1330":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1331":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1332":{"morph":{"__isSmartRef__":true,"id":1323},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1333":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1334":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1335":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1336":{"_Position":{"__isSmartRef__":true,"id":1337},"renderContextTable":{"__isSmartRef__":true,"id":1338},"_Extent":{"__isSmartRef__":true,"id":1339},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1337":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1338":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1339":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1340":{"morph":{"__isSmartRef__":true,"id":1322},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1341":{"x":585.7142857142857,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1342":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1343":{"stops":[{"__isSmartRef__":true,"id":1344},{"__isSmartRef__":true,"id":1346},{"__isSmartRef__":true,"id":1348},{"__isSmartRef__":true,"id":1350}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1344":{"offset":0,"color":{"__isSmartRef__":true,"id":1345}},"1345":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1346":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1347}},"1347":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1348":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1349}},"1349":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1350":{"offset":1,"color":{"__isSmartRef__":true,"id":1351}},"1351":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1352":{"sourceObj":{"__isSmartRef__":true,"id":1322},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1321},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1353":{"sourceObj":{"__isSmartRef__":true,"id":1322},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1322},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1354},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1354":{"source":{"__isSmartRef__":true,"id":1322},"target":{"__isSmartRef__":true,"id":1322}},"1355":{"browser":{"__isSmartRef__":true,"id":1139},"button":{"__isSmartRef__":true,"id":1356},"__LivelyClassName__":"lively.ide.ViewSourceCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"1356":{"submorphs":[{"__isSmartRef__":true,"id":1357}],"scripts":[],"id":27,"renderContextTable":{"__isSmartRef__":true,"id":1369},"shape":{"__isSmartRef__":true,"id":1370},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1374},"_Position":{"__isSmartRef__":true,"id":1375},"priorExtent":{"__isSmartRef__":true,"id":1376},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1377},"label":{"__isSmartRef__":true,"id":1357},"command":{"__isSmartRef__":true,"id":1355},"attributeConnections":[{"__isSmartRef__":true,"id":1386},{"__isSmartRef__":true,"id":1387}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1357":{"submorphs":[],"scripts":[],"id":28,"renderContextTable":{"__isSmartRef__":true,"id":1358},"textChunks":[{"__isSmartRef__":true,"id":1359}],"shape":{"__isSmartRef__":true,"id":1361},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1365},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1366},"_Position":{"__isSmartRef__":true,"id":1367},"priorExtent":{"__isSmartRef__":true,"id":1368},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1356},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1358":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1359":{"style":{"__isSmartRef__":true,"id":1360},"chunkOwner":{"__isSmartRef__":true,"id":1357},"storedString":"View as...","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1360":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1361":{"_Position":{"__isSmartRef__":true,"id":1362},"renderContextTable":{"__isSmartRef__":true,"id":1363},"_Extent":{"__isSmartRef__":true,"id":1364},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1362":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1363":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1364":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1365":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1366":{"morph":{"__isSmartRef__":true,"id":1357},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1367":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1368":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1369":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1370":{"_Position":{"__isSmartRef__":true,"id":1371},"renderContextTable":{"__isSmartRef__":true,"id":1372},"_Extent":{"__isSmartRef__":true,"id":1373},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1371":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1372":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1373":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1374":{"morph":{"__isSmartRef__":true,"id":1356},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1375":{"x":702.8571428571429,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1376":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1377":{"stops":[{"__isSmartRef__":true,"id":1378},{"__isSmartRef__":true,"id":1380},{"__isSmartRef__":true,"id":1382},{"__isSmartRef__":true,"id":1384}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1378":{"offset":0,"color":{"__isSmartRef__":true,"id":1379}},"1379":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1380":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1381}},"1381":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1382":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1383}},"1383":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1384":{"offset":1,"color":{"__isSmartRef__":true,"id":1385}},"1385":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1386":{"sourceObj":{"__isSmartRef__":true,"id":1356},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1355},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1387":{"sourceObj":{"__isSmartRef__":true,"id":1356},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1356},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1388},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1388":{"source":{"__isSmartRef__":true,"id":1356},"target":{"__isSmartRef__":true,"id":1356}},"1389":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1390":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1391":{"attributes":["isClassNode","isGrammarNode","isChangeNode","isFunctionNode","isObjectNode"],"__LivelyClassName__":"lively.ide.NodeTypeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1392":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1393":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1394":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"1395":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1396":{"sourceObj":{"__isSmartRef__":true,"id":1139},"sourceAttrName":"setPane1Content","targetObj":{"__isSmartRef__":true,"id":1397},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1580},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1397":{"submorphs":[],"scripts":[],"id":7,"renderContextTable":{"__isSmartRef__":true,"id":1398},"shape":{"__isSmartRef__":true,"id":1399},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":1404},"_Position":{"__isSmartRef__":true,"id":1405},"itemList":[{"__isSmartRef__":true,"id":1406},{"__isSmartRef__":true,"id":1518},{"__isSmartRef__":true,"id":1519},{"__isSmartRef__":true,"id":1520},{"__isSmartRef__":true,"id":1521},{"__isSmartRef__":true,"id":1522},{"__isSmartRef__":true,"id":1523},{"__isSmartRef__":true,"id":1524},{"__isSmartRef__":true,"id":1525},{"__isSmartRef__":true,"id":1526},{"__isSmartRef__":true,"id":1527},{"__isSmartRef__":true,"id":1528},{"__isSmartRef__":true,"id":1529},{"__isSmartRef__":true,"id":1530},{"__isSmartRef__":true,"id":1531},{"__isSmartRef__":true,"id":1532},{"__isSmartRef__":true,"id":1533},{"__isSmartRef__":true,"id":1534},{"__isSmartRef__":true,"id":1535},{"__isSmartRef__":true,"id":1536},{"__isSmartRef__":true,"id":1537},{"__isSmartRef__":true,"id":1538},{"__isSmartRef__":true,"id":1539},{"__isSmartRef__":true,"id":1540},{"__isSmartRef__":true,"id":1541},{"__isSmartRef__":true,"id":1542},{"__isSmartRef__":true,"id":1543},{"__isSmartRef__":true,"id":1544},{"__isSmartRef__":true,"id":1545},{"__isSmartRef__":true,"id":1546},{"__isSmartRef__":true,"id":1547},{"__isSmartRef__":true,"id":1548},{"__isSmartRef__":true,"id":1549},{"__isSmartRef__":true,"id":1550},{"__isSmartRef__":true,"id":1551},{"__isSmartRef__":true,"id":1552},{"__isSmartRef__":true,"id":1553},{"__isSmartRef__":true,"id":1554},{"__isSmartRef__":true,"id":1555},{"__isSmartRef__":true,"id":1556},{"__isSmartRef__":true,"id":1557},{"__isSmartRef__":true,"id":1558},{"__isSmartRef__":true,"id":1559},{"__isSmartRef__":true,"id":1560},{"__isSmartRef__":true,"id":1561},{"__isSmartRef__":true,"id":1562},{"__isSmartRef__":true,"id":1563},{"__isSmartRef__":true,"id":1564},{"__isSmartRef__":true,"id":1565},{"__isSmartRef__":true,"id":1566},{"__isSmartRef__":true,"id":1567},{"__isSmartRef__":true,"id":1568},{"__isSmartRef__":true,"id":1569},{"__isSmartRef__":true,"id":1570},{"__isSmartRef__":true,"id":1571}],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1572},{"__isSmartRef__":true,"id":1574},{"__isSmartRef__":true,"id":1576},{"__isSmartRef__":true,"id":1578}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"1398":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"1399":{"_Position":{"__isSmartRef__":true,"id":1400},"renderContextTable":{"__isSmartRef__":true,"id":1401},"_Extent":{"__isSmartRef__":true,"id":1402},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1403},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1400":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1401":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1402":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1403":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1404":{"morph":{"__isSmartRef__":true,"id":1397},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1405":{"x":0,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1406":{"isListItem":true,"string":"AgileSoftwareentwicklung/","value":{"__isSmartRef__":true,"id":1407}},"1407":{"target":{"__isSmartRef__":true,"id":1408},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"AgileSoftwareentwicklung/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1408":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/AgileSoftwareentwicklung/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1409":{"target":{"__isSmartRef__":true,"id":1410},"browser":{"__isSmartRef__":true,"id":1139},"parent":null,"allFiles":["Foo.js","Pen.lkml"],"subNamespacePaths":[{"__isSmartRef__":true,"id":1411},{"__isSmartRef__":true,"id":1412},{"__isSmartRef__":true,"id":1413},{"__isSmartRef__":true,"id":1414},{"__isSmartRef__":true,"id":1415},{"__isSmartRef__":true,"id":1416},{"__isSmartRef__":true,"id":1417},{"__isSmartRef__":true,"id":1418},{"__isSmartRef__":true,"id":1419},{"__isSmartRef__":true,"id":1420},{"__isSmartRef__":true,"id":1421},{"__isSmartRef__":true,"id":1422},{"__isSmartRef__":true,"id":1408},{"__isSmartRef__":true,"id":1423},{"__isSmartRef__":true,"id":1424},{"__isSmartRef__":true,"id":1425},{"__isSmartRef__":true,"id":1426},{"__isSmartRef__":true,"id":1427},{"__isSmartRef__":true,"id":1428},{"__isSmartRef__":true,"id":1429},{"__isSmartRef__":true,"id":1430},{"__isSmartRef__":true,"id":1431},{"__isSmartRef__":true,"id":1432},{"__isSmartRef__":true,"id":1433},{"__isSmartRef__":true,"id":1434},{"__isSmartRef__":true,"id":1435},{"__isSmartRef__":true,"id":1436},{"__isSmartRef__":true,"id":1437},{"__isSmartRef__":true,"id":1438},{"__isSmartRef__":true,"id":1439},{"__isSmartRef__":true,"id":1440},{"__isSmartRef__":true,"id":1441},{"__isSmartRef__":true,"id":1442},{"__isSmartRef__":true,"id":1443},{"__isSmartRef__":true,"id":1444},{"__isSmartRef__":true,"id":1445},{"__isSmartRef__":true,"id":1446},{"__isSmartRef__":true,"id":1447},{"__isSmartRef__":true,"id":1448},{"__isSmartRef__":true,"id":1449},{"__isSmartRef__":true,"id":1450},{"__isSmartRef__":true,"id":1451},{"__isSmartRef__":true,"id":1452},{"__isSmartRef__":true,"id":1453},{"__isSmartRef__":true,"id":1454},{"__isSmartRef__":true,"id":1455},{"__isSmartRef__":true,"id":1456},{"__isSmartRef__":true,"id":1457},{"__isSmartRef__":true,"id":1458},{"__isSmartRef__":true,"id":1459},{"__isSmartRef__":true,"id":1460}],"parentNamespacePath":{"__isSmartRef__":true,"id":1461},"_childNodes":[{"__isSmartRef__":true,"id":1407},{"__isSmartRef__":true,"id":1462},{"__isSmartRef__":true,"id":1463},{"__isSmartRef__":true,"id":1464},{"__isSmartRef__":true,"id":1465},{"__isSmartRef__":true,"id":1466},{"__isSmartRef__":true,"id":1467},{"__isSmartRef__":true,"id":1468},{"__isSmartRef__":true,"id":1469},{"__isSmartRef__":true,"id":1470},{"__isSmartRef__":true,"id":1471},{"__isSmartRef__":true,"id":1472},{"__isSmartRef__":true,"id":1473},{"__isSmartRef__":true,"id":1474},{"__isSmartRef__":true,"id":1475},{"__isSmartRef__":true,"id":1476},{"__isSmartRef__":true,"id":1477},{"__isSmartRef__":true,"id":1478},{"__isSmartRef__":true,"id":1479},{"__isSmartRef__":true,"id":1480},{"__isSmartRef__":true,"id":1481},{"__isSmartRef__":true,"id":1482},{"__isSmartRef__":true,"id":1483},{"__isSmartRef__":true,"id":1484},{"__isSmartRef__":true,"id":1485},{"__isSmartRef__":true,"id":1486},{"__isSmartRef__":true,"id":1487},{"__isSmartRef__":true,"id":1488},{"__isSmartRef__":true,"id":1489},{"__isSmartRef__":true,"id":1490},{"__isSmartRef__":true,"id":1491},{"__isSmartRef__":true,"id":1492},{"__isSmartRef__":true,"id":1493},{"__isSmartRef__":true,"id":1494},{"__isSmartRef__":true,"id":1495},{"__isSmartRef__":true,"id":1496},{"__isSmartRef__":true,"id":1497},{"__isSmartRef__":true,"id":1498},{"__isSmartRef__":true,"id":1499},{"__isSmartRef__":true,"id":1500},{"__isSmartRef__":true,"id":1501},{"__isSmartRef__":true,"id":1502},{"__isSmartRef__":true,"id":1503},{"__isSmartRef__":true,"id":1504},{"__isSmartRef__":true,"id":1505},{"__isSmartRef__":true,"id":1506},{"__isSmartRef__":true,"id":1507},{"__isSmartRef__":true,"id":1508},{"__isSmartRef__":true,"id":1509},{"__isSmartRef__":true,"id":1510},{"__isSmartRef__":true,"id":1511},{"__isSmartRef__":true,"id":1512},{"__isSmartRef__":true,"id":1513},{"__isSmartRef__":true,"id":1514},{"__isSmartRef__":true,"id":1516}],"__LivelyClassName__":"lively.ide.SourceControlNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1410":{"__LivelyClassName__":"AnotherSourceDatabase","__SourceModuleName__":"Global.lively.ide.SourceDatabase"},"1411":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/media/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1412":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/constantin/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1413":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/fred/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1414":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/martin/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1415":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/papers/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1416":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/robert/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1417":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/fabrik/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1418":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/apps/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1419":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lively/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1420":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/BWINF/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1421":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/serverTest/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1422":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/demos/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1423":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/benchmarks/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1424":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/roadmap/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1425":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/alex/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1426":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lauritz/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1427":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/sandbox/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1428":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/Dan/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1429":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/Tests/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1430":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/ometa/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1431":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/philipp/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1432":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/widgets/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1433":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/webcollab-integration/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1434":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/issues/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1435":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/fabian/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1436":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/hpi/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1437":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/contextjs/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1438":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/OldPartsBin/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1439":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/odata/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1440":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/tmohr/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1441":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/migration/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1442":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/games/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1443":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/draft/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1444":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/users/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1445":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/sofia/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1446":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/LivelyHPImgzn/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1447":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/server/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1448":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lib/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1449":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/bin/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1450":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/marko/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1451":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/cop/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1452":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/PartsBin/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1453":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/ProjectSeminar2010/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1454":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/projects/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1455":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/testCreatePartsSpace/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1456":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/tim/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1457":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/swa/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1458":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/davide/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1459":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/jens/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1460":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/documentation/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1461":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/../","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"1462":{"target":{"__isSmartRef__":true,"id":1420},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"BWINF/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1463":{"target":{"__isSmartRef__":true,"id":1428},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"Dan/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1464":{"target":{"__isSmartRef__":true,"id":1446},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"LivelyHPImgzn/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1465":{"target":{"__isSmartRef__":true,"id":1438},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"OldPartsBin/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1466":{"target":{"__isSmartRef__":true,"id":1452},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"PartsBin/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1467":{"target":{"__isSmartRef__":true,"id":1453},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"ProjectSeminar2010/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1468":{"target":{"__isSmartRef__":true,"id":1429},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"Tests/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1469":{"target":{"__isSmartRef__":true,"id":1425},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"alex/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1470":{"target":{"__isSmartRef__":true,"id":1418},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"apps/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1471":{"target":{"__isSmartRef__":true,"id":1423},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"benchmarks/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1472":{"target":{"__isSmartRef__":true,"id":1449},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"bin/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1473":{"target":{"__isSmartRef__":true,"id":1412},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"constantin/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1474":{"target":{"__isSmartRef__":true,"id":1437},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"contextjs/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1475":{"target":{"__isSmartRef__":true,"id":1451},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"cop/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1476":{"target":{"__isSmartRef__":true,"id":1458},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"davide/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1477":{"target":{"__isSmartRef__":true,"id":1422},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"demos/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1478":{"target":{"__isSmartRef__":true,"id":1460},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"documentation/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1479":{"target":{"__isSmartRef__":true,"id":1443},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"draft/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1480":{"target":{"__isSmartRef__":true,"id":1435},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"fabian/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1481":{"target":{"__isSmartRef__":true,"id":1417},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"fabrik/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1482":{"target":{"__isSmartRef__":true,"id":1413},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"fred/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1483":{"target":{"__isSmartRef__":true,"id":1442},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"games/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1484":{"target":{"__isSmartRef__":true,"id":1436},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"hpi/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1485":{"target":{"__isSmartRef__":true,"id":1434},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"issues/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1486":{"target":{"__isSmartRef__":true,"id":1459},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"jens/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1487":{"target":{"__isSmartRef__":true,"id":1426},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"lauritz/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1488":{"target":{"__isSmartRef__":true,"id":1448},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"lib/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1489":{"target":{"__isSmartRef__":true,"id":1419},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"lively/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1490":{"target":{"__isSmartRef__":true,"id":1450},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"marko/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1491":{"target":{"__isSmartRef__":true,"id":1414},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"martin/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1492":{"target":{"__isSmartRef__":true,"id":1411},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"media/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1493":{"target":{"__isSmartRef__":true,"id":1441},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"migration/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1494":{"target":{"__isSmartRef__":true,"id":1439},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"odata/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1495":{"target":{"__isSmartRef__":true,"id":1430},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"ometa/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1496":{"target":{"__isSmartRef__":true,"id":1415},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"papers/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1497":{"target":{"__isSmartRef__":true,"id":1431},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"philipp/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1498":{"target":{"__isSmartRef__":true,"id":1454},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"projects/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1499":{"target":{"__isSmartRef__":true,"id":1424},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"roadmap/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1500":{"target":{"__isSmartRef__":true,"id":1416},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"robert/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1501":{"target":{"__isSmartRef__":true,"id":1427},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"sandbox/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1502":{"target":{"__isSmartRef__":true,"id":1447},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"server/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1503":{"target":{"__isSmartRef__":true,"id":1421},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"serverTest/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1504":{"target":{"__isSmartRef__":true,"id":1445},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"sofia/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1505":{"target":{"__isSmartRef__":true,"id":1457},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"swa/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1506":{"target":{"__isSmartRef__":true,"id":1455},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"testCreatePartsSpace/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1507":{"target":{"__isSmartRef__":true,"id":1456},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"tim/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1508":{"target":{"__isSmartRef__":true,"id":1440},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"tmohr/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1509":{"target":{"__isSmartRef__":true,"id":1444},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"users/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1510":{"target":{"__isSmartRef__":true,"id":1433},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"webcollab-integration/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1511":{"target":{"__isSmartRef__":true,"id":1432},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"widgets/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1512":{"target":{"__isSmartRef__":true,"id":1461},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"localName":"../","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1513":{"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"moduleName":"Foo.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"1514":{"target":{"__isSmartRef__":true,"id":1515},"browser":{"__isSmartRef__":true,"id":1139},"parent":{"__isSmartRef__":true,"id":1409},"__LivelyClassName__":"lively.ide.ChangeSetNode","__SourceModuleName__":"Global.lively.ide.LocalBrowser"},"1515":{"name":"Pen.lkml","__LivelyClassName__":"ChangeSet","__SourceModuleName__":"Global.lively.ChangeSet"},"1516":{"target":{"__isSmartRef__":true,"id":1517},"browser":{"__isSmartRef__":true,"id":1139},"__LivelyClassName__":"lively.ide.ChangeSetNode","__SourceModuleName__":"Global.lively.ide.LocalBrowser"},"1517":{"name":"Local code","__LivelyClassName__":"ChangeSet","__SourceModuleName__":"Global.lively.ChangeSet"},"1518":{"isListItem":true,"string":"BWINF/","value":{"__isSmartRef__":true,"id":1462}},"1519":{"isListItem":true,"string":"Dan/","value":{"__isSmartRef__":true,"id":1463}},"1520":{"isListItem":true,"string":"LivelyHPImgzn/","value":{"__isSmartRef__":true,"id":1464}},"1521":{"isListItem":true,"string":"OldPartsBin/","value":{"__isSmartRef__":true,"id":1465}},"1522":{"isListItem":true,"string":"PartsBin/","value":{"__isSmartRef__":true,"id":1466}},"1523":{"isListItem":true,"string":"ProjectSeminar2010/","value":{"__isSmartRef__":true,"id":1467}},"1524":{"isListItem":true,"string":"Tests/","value":{"__isSmartRef__":true,"id":1468}},"1525":{"isListItem":true,"string":"alex/","value":{"__isSmartRef__":true,"id":1469}},"1526":{"isListItem":true,"string":"apps/","value":{"__isSmartRef__":true,"id":1470}},"1527":{"isListItem":true,"string":"benchmarks/","value":{"__isSmartRef__":true,"id":1471}},"1528":{"isListItem":true,"string":"bin/","value":{"__isSmartRef__":true,"id":1472}},"1529":{"isListItem":true,"string":"constantin/","value":{"__isSmartRef__":true,"id":1473}},"1530":{"isListItem":true,"string":"contextjs/","value":{"__isSmartRef__":true,"id":1474}},"1531":{"isListItem":true,"string":"cop/","value":{"__isSmartRef__":true,"id":1475}},"1532":{"isListItem":true,"string":"davide/","value":{"__isSmartRef__":true,"id":1476}},"1533":{"isListItem":true,"string":"demos/","value":{"__isSmartRef__":true,"id":1477}},"1534":{"isListItem":true,"string":"documentation/","value":{"__isSmartRef__":true,"id":1478}},"1535":{"isListItem":true,"string":"draft/","value":{"__isSmartRef__":true,"id":1479}},"1536":{"isListItem":true,"string":"fabian/","value":{"__isSmartRef__":true,"id":1480}},"1537":{"isListItem":true,"string":"fabrik/","value":{"__isSmartRef__":true,"id":1481}},"1538":{"isListItem":true,"string":"fred/","value":{"__isSmartRef__":true,"id":1482}},"1539":{"isListItem":true,"string":"games/","value":{"__isSmartRef__":true,"id":1483}},"1540":{"isListItem":true,"string":"hpi/","value":{"__isSmartRef__":true,"id":1484}},"1541":{"isListItem":true,"string":"issues/","value":{"__isSmartRef__":true,"id":1485}},"1542":{"isListItem":true,"string":"jens/","value":{"__isSmartRef__":true,"id":1486}},"1543":{"isListItem":true,"string":"lauritz/","value":{"__isSmartRef__":true,"id":1487}},"1544":{"isListItem":true,"string":"lib/","value":{"__isSmartRef__":true,"id":1488}},"1545":{"isListItem":true,"string":"lively/","value":{"__isSmartRef__":true,"id":1489}},"1546":{"isListItem":true,"string":"marko/","value":{"__isSmartRef__":true,"id":1490}},"1547":{"isListItem":true,"string":"martin/","value":{"__isSmartRef__":true,"id":1491}},"1548":{"isListItem":true,"string":"media/","value":{"__isSmartRef__":true,"id":1492}},"1549":{"isListItem":true,"string":"migration/","value":{"__isSmartRef__":true,"id":1493}},"1550":{"isListItem":true,"string":"odata/","value":{"__isSmartRef__":true,"id":1494}},"1551":{"isListItem":true,"string":"ometa/","value":{"__isSmartRef__":true,"id":1495}},"1552":{"isListItem":true,"string":"papers/","value":{"__isSmartRef__":true,"id":1496}},"1553":{"isListItem":true,"string":"philipp/","value":{"__isSmartRef__":true,"id":1497}},"1554":{"isListItem":true,"string":"projects/","value":{"__isSmartRef__":true,"id":1498}},"1555":{"isListItem":true,"string":"roadmap/","value":{"__isSmartRef__":true,"id":1499}},"1556":{"isListItem":true,"string":"robert/","value":{"__isSmartRef__":true,"id":1500}},"1557":{"isListItem":true,"string":"sandbox/","value":{"__isSmartRef__":true,"id":1501}},"1558":{"isListItem":true,"string":"server/","value":{"__isSmartRef__":true,"id":1502}},"1559":{"isListItem":true,"string":"serverTest/","value":{"__isSmartRef__":true,"id":1503}},"1560":{"isListItem":true,"string":"sofia/","value":{"__isSmartRef__":true,"id":1504}},"1561":{"isListItem":true,"string":"swa/","value":{"__isSmartRef__":true,"id":1505}},"1562":{"isListItem":true,"string":"testCreatePartsSpace/","value":{"__isSmartRef__":true,"id":1506}},"1563":{"isListItem":true,"string":"tim/","value":{"__isSmartRef__":true,"id":1507}},"1564":{"isListItem":true,"string":"tmohr/","value":{"__isSmartRef__":true,"id":1508}},"1565":{"isListItem":true,"string":"users/","value":{"__isSmartRef__":true,"id":1509}},"1566":{"isListItem":true,"string":"webcollab-integration/","value":{"__isSmartRef__":true,"id":1510}},"1567":{"isListItem":true,"string":"widgets/","value":{"__isSmartRef__":true,"id":1511}},"1568":{"isListItem":true,"string":"../","value":{"__isSmartRef__":true,"id":1512}},"1569":{"isListItem":true,"string":"Foo.js (not parsed)","value":{"__isSmartRef__":true,"id":1513}},"1570":{"isListItem":true,"string":"Pen.lkml","value":{"__isSmartRef__":true,"id":1514}},"1571":{"isListItem":true,"string":"Local code","value":{"__isSmartRef__":true,"id":1516}},"1572":{"sourceObj":{"__isSmartRef__":true,"id":1397},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setPane1Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":1573},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1573":{"source":{"__isSmartRef__":true,"id":1397},"target":{"__isSmartRef__":true,"id":1139}},"1574":{"sourceObj":{"__isSmartRef__":true,"id":1397},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane1Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1575},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1575":{"source":{"__isSmartRef__":true,"id":1397},"target":{"__isSmartRef__":true,"id":1139}},"1576":{"sourceObj":{"__isSmartRef__":true,"id":1397},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane1Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1577},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1577":{"source":{"__isSmartRef__":true,"id":1397},"target":{"__isSmartRef__":true,"id":1139}},"1578":{"sourceObj":{"__isSmartRef__":true,"id":1397},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane1Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1579},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1579":{"source":{"__isSmartRef__":true,"id":1397},"target":{"__isSmartRef__":true,"id":1139}},"1580":{"source":{"__isSmartRef__":true,"id":1139},"target":{"__isSmartRef__":true,"id":1397}},"1581":{"sourceObj":{"__isSmartRef__":true,"id":1139},"sourceAttrName":"setPane2Content","targetObj":{"__isSmartRef__":true,"id":1582},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1599},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1582":{"submorphs":[],"scripts":[],"id":8,"renderContextTable":{"__isSmartRef__":true,"id":1583},"shape":{"__isSmartRef__":true,"id":1584},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":1589},"_Position":{"__isSmartRef__":true,"id":1590},"itemList":["-----"],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1591},{"__isSmartRef__":true,"id":1593},{"__isSmartRef__":true,"id":1595},{"__isSmartRef__":true,"id":1597}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"1583":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"1584":{"_Position":{"__isSmartRef__":true,"id":1585},"renderContextTable":{"__isSmartRef__":true,"id":1586},"_Extent":{"__isSmartRef__":true,"id":1587},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1588},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1585":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1586":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1587":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1588":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1589":{"morph":{"__isSmartRef__":true,"id":1582},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1590":{"x":205,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1591":{"sourceObj":{"__isSmartRef__":true,"id":1582},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setPane2Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":1592},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1592":{"source":{"__isSmartRef__":true,"id":1582},"target":{"__isSmartRef__":true,"id":1139}},"1593":{"sourceObj":{"__isSmartRef__":true,"id":1582},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane2Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1594},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1594":{"source":{"__isSmartRef__":true,"id":1582},"target":{"__isSmartRef__":true,"id":1139}},"1595":{"sourceObj":{"__isSmartRef__":true,"id":1582},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane2Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1596},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1596":{"source":{"__isSmartRef__":true,"id":1582},"target":{"__isSmartRef__":true,"id":1139}},"1597":{"sourceObj":{"__isSmartRef__":true,"id":1582},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane2Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1598},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1598":{"source":{"__isSmartRef__":true,"id":1582},"target":{"__isSmartRef__":true,"id":1139}},"1599":{"source":{"__isSmartRef__":true,"id":1139},"target":{"__isSmartRef__":true,"id":1582}},"1600":{"sourceObj":{"__isSmartRef__":true,"id":1139},"sourceAttrName":"setPane3Content","targetObj":{"__isSmartRef__":true,"id":1601},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1618},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1601":{"submorphs":[],"scripts":[],"id":9,"renderContextTable":{"__isSmartRef__":true,"id":1602},"shape":{"__isSmartRef__":true,"id":1603},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":1608},"_Position":{"__isSmartRef__":true,"id":1609},"itemList":["-----"],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1610},{"__isSmartRef__":true,"id":1612},{"__isSmartRef__":true,"id":1614},{"__isSmartRef__":true,"id":1616}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"1602":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"1603":{"_Position":{"__isSmartRef__":true,"id":1604},"renderContextTable":{"__isSmartRef__":true,"id":1605},"_Extent":{"__isSmartRef__":true,"id":1606},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1607},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1604":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1605":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1606":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1607":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1608":{"morph":{"__isSmartRef__":true,"id":1601},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1609":{"x":410,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1610":{"sourceObj":{"__isSmartRef__":true,"id":1601},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setPane3Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":1611},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1611":{"source":{"__isSmartRef__":true,"id":1601},"target":{"__isSmartRef__":true,"id":1139}},"1612":{"sourceObj":{"__isSmartRef__":true,"id":1601},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane3Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1613},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1613":{"source":{"__isSmartRef__":true,"id":1601},"target":{"__isSmartRef__":true,"id":1139}},"1614":{"sourceObj":{"__isSmartRef__":true,"id":1601},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane3Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1615},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1615":{"source":{"__isSmartRef__":true,"id":1601},"target":{"__isSmartRef__":true,"id":1139}},"1616":{"sourceObj":{"__isSmartRef__":true,"id":1601},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane3Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1617},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1617":{"source":{"__isSmartRef__":true,"id":1601},"target":{"__isSmartRef__":true,"id":1139}},"1618":{"source":{"__isSmartRef__":true,"id":1139},"target":{"__isSmartRef__":true,"id":1601}},"1619":{"sourceObj":{"__isSmartRef__":true,"id":1139},"sourceAttrName":"setPane4Content","targetObj":{"__isSmartRef__":true,"id":1620},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1637},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1620":{"submorphs":[],"scripts":[],"id":10,"renderContextTable":{"__isSmartRef__":true,"id":1621},"shape":{"__isSmartRef__":true,"id":1622},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":1627},"_Position":{"__isSmartRef__":true,"id":1628},"itemList":["-----"],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1629},{"__isSmartRef__":true,"id":1631},{"__isSmartRef__":true,"id":1633},{"__isSmartRef__":true,"id":1635}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"1621":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"1622":{"_Position":{"__isSmartRef__":true,"id":1623},"renderContextTable":{"__isSmartRef__":true,"id":1624},"_Extent":{"__isSmartRef__":true,"id":1625},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1626},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1623":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1624":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1625":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1626":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1627":{"morph":{"__isSmartRef__":true,"id":1620},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1628":{"x":615,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1629":{"sourceObj":{"__isSmartRef__":true,"id":1620},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setPane4Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":1630},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1630":{"source":{"__isSmartRef__":true,"id":1620},"target":{"__isSmartRef__":true,"id":1139}},"1631":{"sourceObj":{"__isSmartRef__":true,"id":1620},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane4Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1632},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1632":{"source":{"__isSmartRef__":true,"id":1620},"target":{"__isSmartRef__":true,"id":1139}},"1633":{"sourceObj":{"__isSmartRef__":true,"id":1620},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane4Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1634},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1634":{"source":{"__isSmartRef__":true,"id":1620},"target":{"__isSmartRef__":true,"id":1139}},"1635":{"sourceObj":{"__isSmartRef__":true,"id":1620},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"getPane4Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1636},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1636":{"source":{"__isSmartRef__":true,"id":1620},"target":{"__isSmartRef__":true,"id":1139}},"1637":{"source":{"__isSmartRef__":true,"id":1139},"target":{"__isSmartRef__":true,"id":1620}},"1638":{"sourceObj":{"__isSmartRef__":true,"id":1139},"sourceAttrName":"setSourceString","targetObj":{"__isSmartRef__":true,"id":1639},"targetMethodName":"setTextString","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1655},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1639":{"submorphs":[],"scripts":[],"id":12,"renderContextTable":{"__isSmartRef__":true,"id":1640},"textChunks":[{"__isSmartRef__":true,"id":1641}],"shape":{"__isSmartRef__":true,"id":1643},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1647},"_ClipMode":"scroll","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Courier","eventHandler":{"__isSmartRef__":true,"id":1648},"_Position":{"__isSmartRef__":true,"id":1649},"priorExtent":{"__isSmartRef__":true,"id":1650},"_MaxTextWidth":820,"_MaxTextHeight":269.5,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1123},"accessibleInInactiveWindow":true,"layout":{"__isSmartRef__":true,"id":1651},"_FontSize":10,"noEval":true,"syntaxHighlightingWhileTyping":true,"attributeConnections":[{"__isSmartRef__":true,"id":1652},{"__isSmartRef__":true,"id":1653}],"doNotSerialize":["$$textString","$$savedTextString"],"doNotCopyProperties":["$$textString","$$savedTextString"],"textString":"-----","lastSyntaxHighlightTime":1306785500670,"styleClass":["Browser_codePaneText"],"focusHaloBorderWidth":0.5,"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1640":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1641":{"style":{"__isSmartRef__":true,"id":1642},"chunkOwner":{"__isSmartRef__":true,"id":1639},"storedString":"-----","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1642":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1643":{"_Position":{"__isSmartRef__":true,"id":1644},"renderContextTable":{"__isSmartRef__":true,"id":1645},"_Extent":{"__isSmartRef__":true,"id":1646},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1133},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1644":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1645":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1646":{"x":820,"y":269.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1647":{"x":5,"y":5,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1648":{"morph":{"__isSmartRef__":true,"id":1639},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1649":{"x":0,"y":247.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1650":{"x":820,"y":269.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1651":{"resizeWidth":true,"resizeHeight":true},"1652":{"sourceObj":{"__isSmartRef__":true,"id":1639},"sourceAttrName":"textString","targetObj":{"__isSmartRef__":true,"id":1639},"targetMethodName":"highlightJavaScriptSyntax","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1653":{"sourceObj":{"__isSmartRef__":true,"id":1639},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setSourceString","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1654},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1654":{"source":{"__isSmartRef__":true,"id":1639},"target":{"__isSmartRef__":true,"id":1139}},"1655":{"source":{"__isSmartRef__":true,"id":1139},"target":{"__isSmartRef__":true,"id":1639}},"1656":{"sourceObj":{"__isSmartRef__":true,"id":1139},"sourceAttrName":"targetURL","targetObj":{"__isSmartRef__":true,"id":1124},"targetMethodName":"setTextString","converter":null,"converterString":null,"updaterString":"function ($upd, value) { value && $upd(String(value)) }","varMapping":{"__isSmartRef__":true,"id":1657},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":1658},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1657":{"source":{"__isSmartRef__":true,"id":1139},"target":{"__isSmartRef__":true,"id":1124}},"1658":{"updater":{"__isSmartRef__":true,"id":1659}},"1659":{"originalFunc":null,"varMapping":{"__isSmartRef__":true,"id":1657},"source":"function ($upd, value) { value && $upd(String(value)) }","funcProperties":{"__isSmartRef__":true,"id":1660},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global"},"1660":{},"1661":{"source":{"__isSmartRef__":true,"id":1124},"target":{"__isSmartRef__":true,"id":1139}},"1662":{"submorphs":[{"__isSmartRef__":true,"id":1663}],"scripts":[],"id":3,"renderContextTable":{"__isSmartRef__":true,"id":1675},"shape":{"__isSmartRef__":true,"id":1676},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1680},"_Position":{"__isSmartRef__":true,"id":1681},"priorExtent":{"__isSmartRef__":true,"id":1682},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1683},"label":{"__isSmartRef__":true,"id":1663},"owner":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1692}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1663":{"submorphs":[],"scripts":[],"id":4,"renderContextTable":{"__isSmartRef__":true,"id":1664},"textChunks":[{"__isSmartRef__":true,"id":1665}],"shape":{"__isSmartRef__":true,"id":1667},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1671},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1672},"_Position":{"__isSmartRef__":true,"id":1673},"priorExtent":{"__isSmartRef__":true,"id":1674},"_MaxTextWidth":98.39999999999999,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1662},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1664":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1665":{"style":{"__isSmartRef__":true,"id":1666},"chunkOwner":{"__isSmartRef__":true,"id":1663},"storedString":"codebase","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1666":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1667":{"_Position":{"__isSmartRef__":true,"id":1668},"renderContextTable":{"__isSmartRef__":true,"id":1669},"_Extent":{"__isSmartRef__":true,"id":1670},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1668":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1669":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1670":{"x":98.39999999999999,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1671":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1672":{"morph":{"__isSmartRef__":true,"id":1663},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1673":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1674":{"x":98.39999999999999,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1675":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1676":{"_Position":{"__isSmartRef__":true,"id":1677},"renderContextTable":{"__isSmartRef__":true,"id":1678},"_Extent":{"__isSmartRef__":true,"id":1679},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1677":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1678":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1679":{"x":98.39999999999999,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1680":{"morph":{"__isSmartRef__":true,"id":1662},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1681":{"x":656,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1682":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1683":{"stops":[{"__isSmartRef__":true,"id":1684},{"__isSmartRef__":true,"id":1686},{"__isSmartRef__":true,"id":1688},{"__isSmartRef__":true,"id":1690}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1684":{"offset":0,"color":{"__isSmartRef__":true,"id":1685}},"1685":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1686":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1687}},"1687":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1688":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1689}},"1689":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1690":{"offset":1,"color":{"__isSmartRef__":true,"id":1691}},"1691":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1692":{"sourceObj":{"__isSmartRef__":true,"id":1662},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setTargetURL","converter":null,"converterString":"function () { return URL.codeBase.withFilename('lively/')}","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1693},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1693":{"source":{"__isSmartRef__":true,"id":1662},"target":{"__isSmartRef__":true,"id":1139}},"1694":{"submorphs":[{"__isSmartRef__":true,"id":1695}],"scripts":[],"id":5,"renderContextTable":{"__isSmartRef__":true,"id":1707},"shape":{"__isSmartRef__":true,"id":1708},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1712},"_Position":{"__isSmartRef__":true,"id":1713},"priorExtent":{"__isSmartRef__":true,"id":1714},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":1715},"label":{"__isSmartRef__":true,"id":1695},"owner":{"__isSmartRef__":true,"id":1123},"attributeConnections":[{"__isSmartRef__":true,"id":1724}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1695":{"submorphs":[],"scripts":[],"id":6,"renderContextTable":{"__isSmartRef__":true,"id":1696},"textChunks":[{"__isSmartRef__":true,"id":1697}],"shape":{"__isSmartRef__":true,"id":1699},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1703},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1704},"_Position":{"__isSmartRef__":true,"id":1705},"priorExtent":{"__isSmartRef__":true,"id":1706},"_MaxTextWidth":65.6,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1694},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1696":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1697":{"style":{"__isSmartRef__":true,"id":1698},"chunkOwner":{"__isSmartRef__":true,"id":1695},"storedString":"local","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1698":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1699":{"_Position":{"__isSmartRef__":true,"id":1700},"renderContextTable":{"__isSmartRef__":true,"id":1701},"_Extent":{"__isSmartRef__":true,"id":1702},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1700":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1701":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1702":{"x":65.6,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1703":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"1704":{"morph":{"__isSmartRef__":true,"id":1695},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1705":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1706":{"x":65.6,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1707":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1708":{"_Position":{"__isSmartRef__":true,"id":1709},"renderContextTable":{"__isSmartRef__":true,"id":1710},"_Extent":{"__isSmartRef__":true,"id":1711},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1709":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1710":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1711":{"x":65.6,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1712":{"morph":{"__isSmartRef__":true,"id":1694},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1713":{"x":754.4,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1714":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1715":{"stops":[{"__isSmartRef__":true,"id":1716},{"__isSmartRef__":true,"id":1718},{"__isSmartRef__":true,"id":1720},{"__isSmartRef__":true,"id":1722}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1716":{"offset":0,"color":{"__isSmartRef__":true,"id":1717}},"1717":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1718":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1719}},"1719":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1720":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1721}},"1721":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1722":{"offset":1,"color":{"__isSmartRef__":true,"id":1723}},"1723":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1724":{"sourceObj":{"__isSmartRef__":true,"id":1694},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1139},"targetMethodName":"setTargetURL","converter":null,"converterString":"function () { return URL.source.getDirectory() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1725},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"1725":{"source":{"__isSmartRef__":true,"id":1694},"target":{"__isSmartRef__":true,"id":1139}},"1726":{"submorphs":[],"scripts":[],"id":11,"renderContextTable":{"__isSmartRef__":true,"id":1727},"shape":{"__isSmartRef__":true,"id":1728},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1733},"_Position":{"__isSmartRef__":true,"id":1734},"fixed":[{"__isSmartRef__":true,"id":1141},{"__isSmartRef__":true,"id":1186},{"__isSmartRef__":true,"id":1220},{"__isSmartRef__":true,"id":1254},{"__isSmartRef__":true,"id":1288},{"__isSmartRef__":true,"id":1322},{"__isSmartRef__":true,"id":1356}],"scalingBelow":[{"__isSmartRef__":true,"id":1639}],"scalingAbove":[{"__isSmartRef__":true,"id":1397},{"__isSmartRef__":true,"id":1582},{"__isSmartRef__":true,"id":1601},{"__isSmartRef__":true,"id":1620}],"minHeight":20,"pointerConnection":null,"owner":{"__isSmartRef__":true,"id":1123},"styleClass":["Browser_resizer"],"__LivelyClassName__":"lively.morphic.HorizontalDivider","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1727":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1728":{"_Position":{"__isSmartRef__":true,"id":1729},"renderContextTable":{"__isSmartRef__":true,"id":1730},"_Extent":{"__isSmartRef__":true,"id":1731},"_Fill":{"__isSmartRef__":true,"id":1732},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1729":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1730":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1731":{"x":820,"y":5.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1732":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1733":{"morph":{"__isSmartRef__":true,"id":1726},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1734":{"x":0,"y":242,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1735":{"submorphs":[],"scripts":[],"id":13,"renderContextTable":{"__isSmartRef__":true,"id":1736},"shape":{"__isSmartRef__":true,"id":1737},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1741},"_Position":{"__isSmartRef__":true,"id":1742},"fixed":[],"scalingBelow":[{"__isSmartRef__":true,"id":1743}],"scalingAbove":[{"__isSmartRef__":true,"id":1639}],"minHeight":20,"pointerConnection":null,"owner":{"__isSmartRef__":true,"id":1123},"styleClass":["Browser_resizer"],"__LivelyClassName__":"lively.morphic.HorizontalDivider","__SourceModuleName__":"Global.lively.morphic.Widgets"},"1736":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1737":{"_Position":{"__isSmartRef__":true,"id":1738},"renderContextTable":{"__isSmartRef__":true,"id":1739},"_Extent":{"__isSmartRef__":true,"id":1740},"_Fill":{"__isSmartRef__":true,"id":1732},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1738":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1739":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1740":{"x":820,"y":5.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1741":{"morph":{"__isSmartRef__":true,"id":1735},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1742":{"x":0,"y":517,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1743":{"submorphs":[],"scripts":[],"id":14,"renderContextTable":{"__isSmartRef__":true,"id":1744},"textChunks":[{"__isSmartRef__":true,"id":1745}],"shape":{"__isSmartRef__":true,"id":1747},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1134},"_ClipMode":"scroll","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1751},"_Position":{"__isSmartRef__":true,"id":1752},"priorExtent":{"__isSmartRef__":true,"id":1753},"_MaxTextWidth":820,"_MaxTextHeight":27.5,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1123},"styleClass":["Browser_commentPaneText"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1744":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1745":{"style":{"__isSmartRef__":true,"id":1746},"chunkOwner":{"__isSmartRef__":true,"id":1743},"storedString":"","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1746":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1747":{"_Position":{"__isSmartRef__":true,"id":1748},"renderContextTable":{"__isSmartRef__":true,"id":1749},"_Extent":{"__isSmartRef__":true,"id":1750},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1133},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1748":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1749":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1750":{"x":820,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1751":{"morph":{"__isSmartRef__":true,"id":1743},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1752":{"x":0,"y":522.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1753":{"x":820,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1754":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1755":{"_Position":{"__isSmartRef__":true,"id":1756},"renderContextTable":{"__isSmartRef__":true,"id":1757},"_Extent":{"__isSmartRef__":true,"id":1758},"_Fill":{"__isSmartRef__":true,"id":1759},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"1756":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1757":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1758":{"x":820,"y":550,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1759":{"r":0.9,"g":0.9,"b":0.9,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1760":{"adjustForNewBounds":true},"1761":{"morph":{"__isSmartRef__":true,"id":1123},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"1762":{"x":0,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1763":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1764":{"renderContextTable":{"__isSmartRef__":true,"id":1765},"_BorderWidth":0,"_Fill":null,"_StrokeOpacity":0,"_BorderRadius":0,"_Extent":{"__isSmartRef__":true,"id":1766},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1765":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1766":{"x":820,"y":572,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1767":{"adjustForNewBounds":true},"1768":{"morph":{"__isSmartRef__":true,"id":984},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1769":{"x":122.66074132190249,"y":816.8357536715893,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1770":{"x":820,"y":572,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1771":{"x":749.4982469957446,"y":831.6624933241551,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1772":{"submorphs":[{"__isSmartRef__":true,"id":1773},{"__isSmartRef__":true,"id":1808}],"scripts":[],"id":93,"renderContextTable":{"__isSmartRef__":true,"id":1946},"shape":{"__isSmartRef__":true,"id":1947},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"layout":{"__isSmartRef__":true,"id":1950},"eventHandler":{"__isSmartRef__":true,"id":1951},"LK2":true,"_Position":{"__isSmartRef__":true,"id":1952},"priorExtent":{"__isSmartRef__":true,"id":1953},"targetMorph":{"__isSmartRef__":true,"id":1773},"titleBar":{"__isSmartRef__":true,"id":1808},"contentOffset":{"__isSmartRef__":true,"id":1804},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"prevDragPos":{"__isSmartRef__":true,"id":1954},"highlighted":true,"_Rotation":0,"_Scale":1,"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"1773":{"submorphs":[],"scripts":[],"id":92,"renderContextTable":{"__isSmartRef__":true,"id":1774},"textChunks":[{"__isSmartRef__":true,"id":1775},{"__isSmartRef__":true,"id":1777},{"__isSmartRef__":true,"id":1780},{"__isSmartRef__":true,"id":1782},{"__isSmartRef__":true,"id":1784},{"__isSmartRef__":true,"id":1786},{"__isSmartRef__":true,"id":1789},{"__isSmartRef__":true,"id":1791},{"__isSmartRef__":true,"id":1794}],"shape":{"__isSmartRef__":true,"id":1796},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1802},"_ClipMode":"auto","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Monaco,monospace","eventHandler":{"__isSmartRef__":true,"id":1803},"_Position":{"__isSmartRef__":true,"id":1804},"priorExtent":{"__isSmartRef__":true,"id":1805},"_MaxTextWidth":500,"_MaxTextHeight":200,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1772},"layout":{"__isSmartRef__":true,"id":1806},"syntaxHighlightingWhileTyping":true,"attributeConnections":[{"__isSmartRef__":true,"id":1807}],"doNotSerialize":["$$textString"],"doNotCopyProperties":["$$textString"],"lastSyntaxHighlightTime":1306785500503,"accessibleInInactiveWindow":true,"priorSelectionRange":[134,134],"charsReplaced":"undefined","lastFindLoc":134,"__SourceModuleName__":"Global.lively.morphic.TextCore","textString":"a = new TextMorph()\na.setExtent(new Point(300, a.getExtent().y))\na.setTextString('hello world')\na.openInWorld()\na.growOrShrinkToFit()\n","__LivelyClassName__":"lively.morphic.Text"},"1774":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1775":{"style":{"__isSmartRef__":true,"id":1776},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":"a = ","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1776":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1777":{"style":{"__isSmartRef__":true,"id":1778},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":"new","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1778":{"color":{"__isSmartRef__":true,"id":1779},"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1779":{"r":0,"g":0,"b":0.5450980392156862,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1780":{"style":{"__isSmartRef__":true,"id":1781},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":" TextMorph()\na.setExtent(","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1781":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1782":{"style":{"__isSmartRef__":true,"id":1783},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":"new","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1783":{"color":{"__isSmartRef__":true,"id":1779},"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1784":{"style":{"__isSmartRef__":true,"id":1785},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":" Point(","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1785":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1786":{"style":{"__isSmartRef__":true,"id":1787},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":"300","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1787":{"color":{"__isSmartRef__":true,"id":1788},"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1788":{"r":0,"g":0,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1789":{"style":{"__isSmartRef__":true,"id":1790},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":", a.getExtent().y))\na.setTextString(","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1790":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1791":{"style":{"__isSmartRef__":true,"id":1792},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":"'hello world'","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1792":{"color":{"__isSmartRef__":true,"id":1793},"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1793":{"r":0,"g":0.5019607843137255,"b":0.5019607843137255,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1794":{"style":{"__isSmartRef__":true,"id":1795},"chunkOwner":{"__isSmartRef__":true,"id":1773},"storedString":")\na.openInWorld()\na.growOrShrinkToFit()\n","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1795":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1796":{"_Position":{"__isSmartRef__":true,"id":1797},"renderContextTable":{"__isSmartRef__":true,"id":1798},"_Extent":{"__isSmartRef__":true,"id":1799},"_BorderWidth":2,"_BorderColor":{"__isSmartRef__":true,"id":1800},"_Fill":{"__isSmartRef__":true,"id":1801},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1797":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1798":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1799":{"x":500,"y":200,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1800":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1801":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1802":{"x":2,"y":1,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1803":{"morph":{"__isSmartRef__":true,"id":1773},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1804":{"x":0,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1805":{"x":500,"y":200,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1806":{"resizeWidth":true,"resizeHeight":true},"1807":{"sourceObj":{"__isSmartRef__":true,"id":1773},"sourceAttrName":"textString","targetObj":{"__isSmartRef__":true,"id":1773},"targetMethodName":"highlightJavaScriptSyntax","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1808":{"submorphs":[{"__isSmartRef__":true,"id":1809},{"__isSmartRef__":true,"id":1821},{"__isSmartRef__":true,"id":1867},{"__isSmartRef__":true,"id":1901}],"scripts":[],"id":94,"renderContextTable":{"__isSmartRef__":true,"id":1936},"shape":{"__isSmartRef__":true,"id":1937},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":1942},"eventHandler":{"__isSmartRef__":true,"id":1943},"_Position":{"__isSmartRef__":true,"id":1944},"eventsAreIgnored":true,"_HandStyle":"default","windowMorph":{"__isSmartRef__":true,"id":1772},"label":{"__isSmartRef__":true,"id":1809},"closeButton":{"__isSmartRef__":true,"id":1821},"menuButton":{"__isSmartRef__":true,"id":1867},"collapseButton":{"__isSmartRef__":true,"id":1901},"priorExtent":{"__isSmartRef__":true,"id":1945},"owner":{"__isSmartRef__":true,"id":1772},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"1809":{"submorphs":[],"scripts":[],"id":95,"renderContextTable":{"__isSmartRef__":true,"id":1810},"textChunks":[{"__isSmartRef__":true,"id":1811}],"shape":{"__isSmartRef__":true,"id":1813},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1817},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1818},"_Position":{"__isSmartRef__":true,"id":1819},"priorExtent":{"__isSmartRef__":true,"id":1820},"_MaxTextWidth":null,"_MaxTextHeight":14,"evalEnabled":false,"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":10,"_Align":"center","owner":{"__isSmartRef__":true,"id":1808},"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1810":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1811":{"style":{"__isSmartRef__":true,"id":1812},"morph":{"__isSmartRef__":true,"id":1809},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1809},"storedString":"Workspace","__LivelyClassName__":"lively.morphic.TextChunk"},"1812":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1813":{"_Position":{"__isSmartRef__":true,"id":1814},"renderContextTable":{"__isSmartRef__":true,"id":1815},"_Extent":{"__isSmartRef__":true,"id":1816},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1800},"_Fill":null,"_BorderRadius":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1814":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1815":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1816":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1817":{"x":0,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1818":{"morph":{"__isSmartRef__":true,"id":1809},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1819":{"x":20,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1820":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1821":{"submorphs":[{"__isSmartRef__":true,"id":1822}],"scripts":[],"id":96,"renderContextTable":{"__isSmartRef__":true,"id":1834},"shape":{"__isSmartRef__":true,"id":1835},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1850},"_Position":{"__isSmartRef__":true,"id":1851},"priorExtent":{"__isSmartRef__":true,"id":1852},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1840},"lighterFill":{"__isSmartRef__":true,"id":1853},"label":{"__isSmartRef__":true,"id":1822},"owner":{"__isSmartRef__":true,"id":1808},"layout":{"__isSmartRef__":true,"id":1862},"attributeConnections":[{"__isSmartRef__":true,"id":1863},{"__isSmartRef__":true,"id":1865}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1822":{"submorphs":[],"scripts":[],"id":97,"renderContextTable":{"__isSmartRef__":true,"id":1823},"textChunks":[{"__isSmartRef__":true,"id":1824}],"shape":{"__isSmartRef__":true,"id":1826},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1830},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1831},"_Position":{"__isSmartRef__":true,"id":1832},"priorExtent":{"__isSmartRef__":true,"id":1833},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1821},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1823":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1824":{"style":{"__isSmartRef__":true,"id":1825},"morph":{"__isSmartRef__":true,"id":1822},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1822},"storedString":"X","__LivelyClassName__":"lively.morphic.TextChunk"},"1825":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1826":{"_Position":{"__isSmartRef__":true,"id":1827},"renderContextTable":{"__isSmartRef__":true,"id":1828},"_Extent":{"__isSmartRef__":true,"id":1829},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1800},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1827":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1828":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1829":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1830":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1831":{"morph":{"__isSmartRef__":true,"id":1822},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1832":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1833":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1834":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1835":{"_Position":{"__isSmartRef__":true,"id":1836},"renderContextTable":{"__isSmartRef__":true,"id":1837},"_Extent":{"__isSmartRef__":true,"id":1838},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1839},"_Fill":{"__isSmartRef__":true,"id":1840},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1836":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1837":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1838":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1839":{"r":0.7411764705882353,"g":0.7450980392156863,"b":0.7529411764705882,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1840":{"stops":[{"__isSmartRef__":true,"id":1841},{"__isSmartRef__":true,"id":1843},{"__isSmartRef__":true,"id":1845},{"__isSmartRef__":true,"id":1847}],"vector":{"__isSmartRef__":true,"id":1849},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1841":{"offset":0,"color":{"__isSmartRef__":true,"id":1842}},"1842":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1843":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1844}},"1844":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1845":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1846}},"1846":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1847":{"offset":1,"color":{"__isSmartRef__":true,"id":1848}},"1848":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1849":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1850":{"morph":{"__isSmartRef__":true,"id":1821},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1851":{"x":480,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1852":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1853":{"stops":[{"__isSmartRef__":true,"id":1854},{"__isSmartRef__":true,"id":1856},{"__isSmartRef__":true,"id":1858},{"__isSmartRef__":true,"id":1860}],"vector":{"__isSmartRef__":true,"id":1849},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1854":{"offset":0,"color":{"__isSmartRef__":true,"id":1855}},"1855":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1856":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1857}},"1857":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1858":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1859}},"1859":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1860":{"offset":1,"color":{"__isSmartRef__":true,"id":1861}},"1861":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1862":{"moveHorizontal":true},"1863":{"sourceObj":{"__isSmartRef__":true,"id":1821},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1772},"targetMethodName":"getCloseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1864},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1864":{"source":{"__isSmartRef__":true,"id":1821},"target":{"__isSmartRef__":true,"id":1772}},"1865":{"sourceObj":{"__isSmartRef__":true,"id":1821},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1772},"targetMethodName":"initiateShutdown","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1866},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1866":{"source":{"__isSmartRef__":true,"id":1821},"target":{"__isSmartRef__":true,"id":1772}},"1867":{"submorphs":[{"__isSmartRef__":true,"id":1868}],"scripts":[],"id":98,"renderContextTable":{"__isSmartRef__":true,"id":1880},"shape":{"__isSmartRef__":true,"id":1881},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1885},"_Position":{"__isSmartRef__":true,"id":1886},"priorExtent":{"__isSmartRef__":true,"id":1887},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1840},"lighterFill":{"__isSmartRef__":true,"id":1888},"label":{"__isSmartRef__":true,"id":1868},"owner":{"__isSmartRef__":true,"id":1808},"attributeConnections":[{"__isSmartRef__":true,"id":1897},{"__isSmartRef__":true,"id":1899}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1868":{"submorphs":[],"scripts":[],"id":99,"renderContextTable":{"__isSmartRef__":true,"id":1869},"textChunks":[{"__isSmartRef__":true,"id":1870}],"shape":{"__isSmartRef__":true,"id":1872},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1876},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1877},"_Position":{"__isSmartRef__":true,"id":1878},"priorExtent":{"__isSmartRef__":true,"id":1879},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1867},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1869":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1870":{"style":{"__isSmartRef__":true,"id":1871},"morph":{"__isSmartRef__":true,"id":1868},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1868},"storedString":"M","__LivelyClassName__":"lively.morphic.TextChunk"},"1871":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1872":{"_Position":{"__isSmartRef__":true,"id":1873},"renderContextTable":{"__isSmartRef__":true,"id":1874},"_Extent":{"__isSmartRef__":true,"id":1875},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1800},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1873":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1874":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1875":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1876":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1877":{"morph":{"__isSmartRef__":true,"id":1868},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1878":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1879":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1880":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1881":{"_Position":{"__isSmartRef__":true,"id":1882},"renderContextTable":{"__isSmartRef__":true,"id":1883},"_Extent":{"__isSmartRef__":true,"id":1884},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1839},"_Fill":{"__isSmartRef__":true,"id":1840},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1882":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1883":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1884":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1885":{"morph":{"__isSmartRef__":true,"id":1867},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1886":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1887":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1888":{"stops":[{"__isSmartRef__":true,"id":1889},{"__isSmartRef__":true,"id":1891},{"__isSmartRef__":true,"id":1893},{"__isSmartRef__":true,"id":1895}],"vector":{"__isSmartRef__":true,"id":1849},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1889":{"offset":0,"color":{"__isSmartRef__":true,"id":1890}},"1890":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1891":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1892}},"1892":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1893":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1894}},"1894":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1895":{"offset":1,"color":{"__isSmartRef__":true,"id":1896}},"1896":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1897":{"sourceObj":{"__isSmartRef__":true,"id":1867},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1772},"targetMethodName":"getMenuHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1898},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1898":{"source":{"__isSmartRef__":true,"id":1867},"target":{"__isSmartRef__":true,"id":1772}},"1899":{"sourceObj":{"__isSmartRef__":true,"id":1867},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1772},"targetMethodName":"showTargetMorphMenu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1900},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1900":{"source":{"__isSmartRef__":true,"id":1867},"target":{"__isSmartRef__":true,"id":1772}},"1901":{"submorphs":[{"__isSmartRef__":true,"id":1902}],"scripts":[],"id":100,"renderContextTable":{"__isSmartRef__":true,"id":1914},"shape":{"__isSmartRef__":true,"id":1915},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":1919},"_Position":{"__isSmartRef__":true,"id":1920},"priorExtent":{"__isSmartRef__":true,"id":1921},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1840},"lighterFill":{"__isSmartRef__":true,"id":1922},"label":{"__isSmartRef__":true,"id":1902},"owner":{"__isSmartRef__":true,"id":1808},"layout":{"__isSmartRef__":true,"id":1931},"attributeConnections":[{"__isSmartRef__":true,"id":1932},{"__isSmartRef__":true,"id":1934}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1902":{"submorphs":[],"scripts":[],"id":101,"renderContextTable":{"__isSmartRef__":true,"id":1903},"textChunks":[{"__isSmartRef__":true,"id":1904}],"shape":{"__isSmartRef__":true,"id":1906},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1910},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1911},"_Position":{"__isSmartRef__":true,"id":1912},"priorExtent":{"__isSmartRef__":true,"id":1913},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1901},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1903":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1904":{"style":{"__isSmartRef__":true,"id":1905},"morph":{"__isSmartRef__":true,"id":1902},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1902},"storedString":"–","__LivelyClassName__":"lively.morphic.TextChunk"},"1905":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1906":{"_Position":{"__isSmartRef__":true,"id":1907},"renderContextTable":{"__isSmartRef__":true,"id":1908},"_Extent":{"__isSmartRef__":true,"id":1909},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1800},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1907":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1908":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1909":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1910":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1911":{"morph":{"__isSmartRef__":true,"id":1902},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1912":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1913":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1914":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1915":{"_Position":{"__isSmartRef__":true,"id":1916},"renderContextTable":{"__isSmartRef__":true,"id":1917},"_Extent":{"__isSmartRef__":true,"id":1918},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1839},"_Fill":{"__isSmartRef__":true,"id":1840},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1916":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1917":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1918":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1919":{"morph":{"__isSmartRef__":true,"id":1901},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1920":{"x":461,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1921":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1922":{"stops":[{"__isSmartRef__":true,"id":1923},{"__isSmartRef__":true,"id":1925},{"__isSmartRef__":true,"id":1927},{"__isSmartRef__":true,"id":1929}],"vector":{"__isSmartRef__":true,"id":1849},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"1923":{"offset":0,"color":{"__isSmartRef__":true,"id":1924}},"1924":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1925":{"offset":0.4,"color":{"__isSmartRef__":true,"id":1926}},"1926":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1927":{"offset":0.6,"color":{"__isSmartRef__":true,"id":1928}},"1928":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1929":{"offset":1,"color":{"__isSmartRef__":true,"id":1930}},"1930":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1931":{"moveHorizontal":true},"1932":{"sourceObj":{"__isSmartRef__":true,"id":1901},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1772},"targetMethodName":"getCollapseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1933},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1933":{"source":{"__isSmartRef__":true,"id":1901},"target":{"__isSmartRef__":true,"id":1772}},"1934":{"sourceObj":{"__isSmartRef__":true,"id":1901},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1772},"targetMethodName":"toggleCollapse","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":1935},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1935":{"source":{"__isSmartRef__":true,"id":1901},"target":{"__isSmartRef__":true,"id":1772}},"1936":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1937":{"_Position":{"__isSmartRef__":true,"id":1938},"renderContextTable":{"__isSmartRef__":true,"id":1939},"_Extent":{"__isSmartRef__":true,"id":1940},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1941},"_Fill":{"__isSmartRef__":true,"id":918},"_StrokeOpacity":1,"_BorderRadius":"8px 8px 0px 0px","__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1938":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1939":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1940":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1941":{"r":0.4,"g":0.4,"b":0.4,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1942":{"resizeWidth":true,"adjustForNewBounds":true},"1943":{"morph":{"__isSmartRef__":true,"id":1808},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1944":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1945":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1946":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1947":{"renderContextTable":{"__isSmartRef__":true,"id":1948},"_BorderWidth":0,"_Fill":null,"_StrokeOpacity":0,"_BorderRadius":0,"_Extent":{"__isSmartRef__":true,"id":1949},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1948":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1949":{"x":500,"y":222,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1950":{"adjustForNewBounds":true},"1951":{"morph":{"__isSmartRef__":true,"id":1772},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1952":{"x":541.0916371827284,"y":357.7250874498122,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1953":{"x":500,"y":222,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1954":{"x":613.2258384510637,"y":362.7250874498122,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1955":{"submorphs":[{"__isSmartRef__":true,"id":1956},{"__isSmartRef__":true,"id":1972}],"scripts":[],"id":2044,"renderContextTable":{"__isSmartRef__":true,"id":2097},"shape":{"__isSmartRef__":true,"id":2098},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"layout":{"__isSmartRef__":true,"id":2101},"eventHandler":{"__isSmartRef__":true,"id":2102},"LK2":true,"_Position":{"__isSmartRef__":true,"id":2103},"priorExtent":{"__isSmartRef__":true,"id":2104},"targetMorph":{"__isSmartRef__":true,"id":1956},"titleBar":{"__isSmartRef__":true,"id":1972},"contentOffset":{"__isSmartRef__":true,"id":1968},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"highlighted":true,"_Rotation":0,"_Scale":1,"prevDragPos":{"__isSmartRef__":true,"id":2105},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"1956":{"submorphs":[],"scripts":[],"id":2043,"renderContextTable":{"__isSmartRef__":true,"id":1957},"textChunks":[{"__isSmartRef__":true,"id":1958},{"__isSmartRef__":true,"id":1960}],"shape":{"__isSmartRef__":true,"id":1962},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":295},"_ClipMode":"auto","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Monaco,monospace","eventHandler":{"__isSmartRef__":true,"id":1967},"_Position":{"__isSmartRef__":true,"id":1968},"priorExtent":{"__isSmartRef__":true,"id":1969},"_MaxTextWidth":500,"_MaxTextHeight":200,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1955},"layout":{"__isSmartRef__":true,"id":1970},"syntaxHighlightingWhileTyping":true,"attributeConnections":[{"__isSmartRef__":true,"id":1971}],"doNotSerialize":["$$textString"],"doNotCopyProperties":["$$textString"],"lastSyntaxHighlightTime":1306785548209,"accessibleInInactiveWindow":true,"prevScroll":[0,0],"priorSelectionRange":[24,4],"charsReplaced":"a = new Morph();\na.setExtent(new Point(200,200));\na.setFill(Color.red);\na.openInWorld();\nt = new lively.morphic.Text('Hello');\nt.openInWorld()","lastFindLoc":0,"showsHalos":false,"__SourceModuleName__":"Global.lively.morphic.TextCore","textString":"new lively.morphic.Tests.LayoutTests().runAll()","__LivelyClassName__":"lively.morphic.Text"},"1957":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1958":{"style":{"__isSmartRef__":true,"id":1959},"chunkOwner":{"__isSmartRef__":true,"id":1956},"storedString":"new","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1959":{"color":{"__isSmartRef__":true,"id":1779},"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1960":{"style":{"__isSmartRef__":true,"id":1961},"chunkOwner":{"__isSmartRef__":true,"id":1956},"storedString":" lively.morphic.Tests.LayoutTests().runAll()","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1961":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"1962":{"_Position":{"__isSmartRef__":true,"id":1963},"renderContextTable":{"__isSmartRef__":true,"id":1964},"_Extent":{"__isSmartRef__":true,"id":1965},"_BorderWidth":2,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":{"__isSmartRef__":true,"id":1966},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1963":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1964":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1965":{"x":500,"y":200,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1966":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"1967":{"morph":{"__isSmartRef__":true,"id":1956},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1968":{"x":0,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1969":{"x":500,"y":200,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1970":{"resizeWidth":true,"resizeHeight":true},"1971":{"sourceObj":{"__isSmartRef__":true,"id":1956},"sourceAttrName":"textString","targetObj":{"__isSmartRef__":true,"id":1956},"targetMethodName":"highlightJavaScriptSyntax","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1972":{"submorphs":[{"__isSmartRef__":true,"id":1973},{"__isSmartRef__":true,"id":1984},{"__isSmartRef__":true,"id":2019},{"__isSmartRef__":true,"id":2053}],"scripts":[],"id":2045,"renderContextTable":{"__isSmartRef__":true,"id":2088},"shape":{"__isSmartRef__":true,"id":2089},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":2093},"eventHandler":{"__isSmartRef__":true,"id":2094},"_Position":{"__isSmartRef__":true,"id":2095},"eventsAreIgnored":true,"_HandStyle":"default","windowMorph":{"__isSmartRef__":true,"id":1955},"label":{"__isSmartRef__":true,"id":1973},"closeButton":{"__isSmartRef__":true,"id":1984},"menuButton":{"__isSmartRef__":true,"id":2019},"collapseButton":{"__isSmartRef__":true,"id":2053},"priorExtent":{"__isSmartRef__":true,"id":2096},"owner":{"__isSmartRef__":true,"id":1955},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"1973":{"submorphs":[],"scripts":[],"id":2046,"renderContextTable":{"__isSmartRef__":true,"id":1974},"textChunks":[{"__isSmartRef__":true,"id":1975}],"shape":{"__isSmartRef__":true,"id":1977},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":994},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1981},"_Position":{"__isSmartRef__":true,"id":1982},"priorExtent":{"__isSmartRef__":true,"id":1983},"_MaxTextWidth":null,"_MaxTextHeight":14,"evalEnabled":false,"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":10,"_Align":"center","owner":{"__isSmartRef__":true,"id":1972},"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1974":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1975":{"style":{"__isSmartRef__":true,"id":1976},"morph":{"__isSmartRef__":true,"id":1973},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1973},"storedString":"Workspace","__LivelyClassName__":"lively.morphic.TextChunk"},"1976":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1977":{"_Position":{"__isSmartRef__":true,"id":1978},"renderContextTable":{"__isSmartRef__":true,"id":1979},"_Extent":{"__isSmartRef__":true,"id":1980},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"_BorderRadius":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1978":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1979":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1980":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1981":{"morph":{"__isSmartRef__":true,"id":1973},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1982":{"x":20,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1983":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1984":{"submorphs":[{"__isSmartRef__":true,"id":1985}],"scripts":[],"id":2047,"renderContextTable":{"__isSmartRef__":true,"id":1997},"shape":{"__isSmartRef__":true,"id":1998},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2002},"_Position":{"__isSmartRef__":true,"id":2003},"priorExtent":{"__isSmartRef__":true,"id":2004},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":2005},"label":{"__isSmartRef__":true,"id":1985},"owner":{"__isSmartRef__":true,"id":1972},"layout":{"__isSmartRef__":true,"id":2014},"attributeConnections":[{"__isSmartRef__":true,"id":2015},{"__isSmartRef__":true,"id":2017}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1985":{"submorphs":[],"scripts":[],"id":2048,"renderContextTable":{"__isSmartRef__":true,"id":1986},"textChunks":[{"__isSmartRef__":true,"id":1987}],"shape":{"__isSmartRef__":true,"id":1989},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1993},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":1994},"_Position":{"__isSmartRef__":true,"id":1995},"priorExtent":{"__isSmartRef__":true,"id":1996},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":1984},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"1986":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"1987":{"style":{"__isSmartRef__":true,"id":1988},"morph":{"__isSmartRef__":true,"id":1985},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":1985},"storedString":"X","__LivelyClassName__":"lively.morphic.TextChunk"},"1988":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"1989":{"_Position":{"__isSmartRef__":true,"id":1990},"renderContextTable":{"__isSmartRef__":true,"id":1991},"_Extent":{"__isSmartRef__":true,"id":1992},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1990":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1991":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"1992":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1993":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1994":{"morph":{"__isSmartRef__":true,"id":1985},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1995":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1996":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1997":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"1998":{"_Position":{"__isSmartRef__":true,"id":1999},"renderContextTable":{"__isSmartRef__":true,"id":2000},"_Extent":{"__isSmartRef__":true,"id":2001},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1999":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2000":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2001":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2002":{"morph":{"__isSmartRef__":true,"id":1984},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2003":{"x":480,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2004":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2005":{"stops":[{"__isSmartRef__":true,"id":2006},{"__isSmartRef__":true,"id":2008},{"__isSmartRef__":true,"id":2010},{"__isSmartRef__":true,"id":2012}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"2006":{"offset":0,"color":{"__isSmartRef__":true,"id":2007}},"2007":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2008":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2009}},"2009":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2010":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2011}},"2011":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2012":{"offset":1,"color":{"__isSmartRef__":true,"id":2013}},"2013":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2014":{"moveHorizontal":true},"2015":{"sourceObj":{"__isSmartRef__":true,"id":1984},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1955},"targetMethodName":"getCloseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2016},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2016":{"source":{"__isSmartRef__":true,"id":1984},"target":{"__isSmartRef__":true,"id":1955}},"2017":{"sourceObj":{"__isSmartRef__":true,"id":1984},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1955},"targetMethodName":"initiateShutdown","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2018},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2018":{"source":{"__isSmartRef__":true,"id":1984},"target":{"__isSmartRef__":true,"id":1955}},"2019":{"submorphs":[{"__isSmartRef__":true,"id":2020}],"scripts":[],"id":2049,"renderContextTable":{"__isSmartRef__":true,"id":2032},"shape":{"__isSmartRef__":true,"id":2033},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2037},"_Position":{"__isSmartRef__":true,"id":2038},"priorExtent":{"__isSmartRef__":true,"id":2039},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":2040},"label":{"__isSmartRef__":true,"id":2020},"owner":{"__isSmartRef__":true,"id":1972},"attributeConnections":[{"__isSmartRef__":true,"id":2049},{"__isSmartRef__":true,"id":2051}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"2020":{"submorphs":[],"scripts":[],"id":2050,"renderContextTable":{"__isSmartRef__":true,"id":2021},"textChunks":[{"__isSmartRef__":true,"id":2022}],"shape":{"__isSmartRef__":true,"id":2024},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2028},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2029},"_Position":{"__isSmartRef__":true,"id":2030},"priorExtent":{"__isSmartRef__":true,"id":2031},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2019},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"2021":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2022":{"style":{"__isSmartRef__":true,"id":2023},"morph":{"__isSmartRef__":true,"id":2020},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":2020},"storedString":"M","__LivelyClassName__":"lively.morphic.TextChunk"},"2023":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"2024":{"_Position":{"__isSmartRef__":true,"id":2025},"renderContextTable":{"__isSmartRef__":true,"id":2026},"_Extent":{"__isSmartRef__":true,"id":2027},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2025":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2026":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2027":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2028":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"2029":{"morph":{"__isSmartRef__":true,"id":2020},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2030":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2031":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2032":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2033":{"_Position":{"__isSmartRef__":true,"id":2034},"renderContextTable":{"__isSmartRef__":true,"id":2035},"_Extent":{"__isSmartRef__":true,"id":2036},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2034":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2035":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2036":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2037":{"morph":{"__isSmartRef__":true,"id":2019},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2038":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2039":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2040":{"stops":[{"__isSmartRef__":true,"id":2041},{"__isSmartRef__":true,"id":2043},{"__isSmartRef__":true,"id":2045},{"__isSmartRef__":true,"id":2047}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"2041":{"offset":0,"color":{"__isSmartRef__":true,"id":2042}},"2042":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2043":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2044}},"2044":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2045":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2046}},"2046":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2047":{"offset":1,"color":{"__isSmartRef__":true,"id":2048}},"2048":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2049":{"sourceObj":{"__isSmartRef__":true,"id":2019},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1955},"targetMethodName":"getMenuHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2050},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2050":{"source":{"__isSmartRef__":true,"id":2019},"target":{"__isSmartRef__":true,"id":1955}},"2051":{"sourceObj":{"__isSmartRef__":true,"id":2019},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1955},"targetMethodName":"showTargetMorphMenu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2052},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2052":{"source":{"__isSmartRef__":true,"id":2019},"target":{"__isSmartRef__":true,"id":1955}},"2053":{"submorphs":[{"__isSmartRef__":true,"id":2054}],"scripts":[],"id":2051,"renderContextTable":{"__isSmartRef__":true,"id":2066},"shape":{"__isSmartRef__":true,"id":2067},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2071},"_Position":{"__isSmartRef__":true,"id":2072},"priorExtent":{"__isSmartRef__":true,"id":2073},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":2074},"label":{"__isSmartRef__":true,"id":2054},"owner":{"__isSmartRef__":true,"id":1972},"layout":{"__isSmartRef__":true,"id":2083},"attributeConnections":[{"__isSmartRef__":true,"id":2084},{"__isSmartRef__":true,"id":2086}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"2054":{"submorphs":[],"scripts":[],"id":2052,"renderContextTable":{"__isSmartRef__":true,"id":2055},"textChunks":[{"__isSmartRef__":true,"id":2056}],"shape":{"__isSmartRef__":true,"id":2058},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2062},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2063},"_Position":{"__isSmartRef__":true,"id":2064},"priorExtent":{"__isSmartRef__":true,"id":2065},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2053},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"2055":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2056":{"style":{"__isSmartRef__":true,"id":2057},"morph":{"__isSmartRef__":true,"id":2054},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":2054},"storedString":"–","__LivelyClassName__":"lively.morphic.TextChunk"},"2057":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"2058":{"_Position":{"__isSmartRef__":true,"id":2059},"renderContextTable":{"__isSmartRef__":true,"id":2060},"_Extent":{"__isSmartRef__":true,"id":2061},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2059":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2060":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2061":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2062":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"2063":{"morph":{"__isSmartRef__":true,"id":2054},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2064":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2065":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2066":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2067":{"_Position":{"__isSmartRef__":true,"id":2068},"renderContextTable":{"__isSmartRef__":true,"id":2069},"_Extent":{"__isSmartRef__":true,"id":2070},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2068":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2069":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2070":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2071":{"morph":{"__isSmartRef__":true,"id":2053},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2072":{"x":461,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2073":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2074":{"stops":[{"__isSmartRef__":true,"id":2075},{"__isSmartRef__":true,"id":2077},{"__isSmartRef__":true,"id":2079},{"__isSmartRef__":true,"id":2081}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"2075":{"offset":0,"color":{"__isSmartRef__":true,"id":2076}},"2076":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2077":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2078}},"2078":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2079":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2080}},"2080":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2081":{"offset":1,"color":{"__isSmartRef__":true,"id":2082}},"2082":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2083":{"moveHorizontal":true},"2084":{"sourceObj":{"__isSmartRef__":true,"id":2053},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1955},"targetMethodName":"getCollapseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2085},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2085":{"source":{"__isSmartRef__":true,"id":2053},"target":{"__isSmartRef__":true,"id":1955}},"2086":{"sourceObj":{"__isSmartRef__":true,"id":2053},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1955},"targetMethodName":"toggleCollapse","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2087},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2087":{"source":{"__isSmartRef__":true,"id":2053},"target":{"__isSmartRef__":true,"id":1955}},"2088":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2089":{"_Position":{"__isSmartRef__":true,"id":2090},"renderContextTable":{"__isSmartRef__":true,"id":2091},"_Extent":{"__isSmartRef__":true,"id":2092},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1118},"_Fill":{"__isSmartRef__":true,"id":918},"_StrokeOpacity":1,"_BorderRadius":"8px 8px 0px 0px","__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2090":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2091":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2092":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2093":{"resizeWidth":true,"adjustForNewBounds":true},"2094":{"morph":{"__isSmartRef__":true,"id":1972},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2095":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2096":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2097":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2098":{"renderContextTable":{"__isSmartRef__":true,"id":2099},"_BorderWidth":0,"_Fill":null,"_StrokeOpacity":0,"_BorderRadius":0,"_Extent":{"__isSmartRef__":true,"id":2100},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2099":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2100":{"x":500,"y":222,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2101":{"adjustForNewBounds":true},"2102":{"morph":{"__isSmartRef__":true,"id":1955},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2103":{"x":849.7085624162698,"y":679.368051735419,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2104":{"x":500,"y":222,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2105":{"x":1125.2493734976217,"y":689.3780667554441,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2106":{"submorphs":[{"__isSmartRef__":true,"id":2107},{"__isSmartRef__":true,"id":2239}],"scripts":[],"id":3367,"renderContextTable":{"__isSmartRef__":true,"id":3015},"shape":{"__isSmartRef__":true,"id":3016},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"layout":{"__isSmartRef__":true,"id":3019},"eventHandler":{"__isSmartRef__":true,"id":3020},"LK2":true,"_Position":{"__isSmartRef__":true,"id":3021},"priorExtent":{"__isSmartRef__":true,"id":3022},"targetMorph":{"__isSmartRef__":true,"id":2239},"titleBar":{"__isSmartRef__":true,"id":2107},"contentOffset":{"__isSmartRef__":true,"id":3014},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"prevDragPos":{"__isSmartRef__":true,"id":3023},"highlighted":true,"_Rotation":0,"_Scale":1,"cameForward":false,"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"2107":{"submorphs":[{"__isSmartRef__":true,"id":2108},{"__isSmartRef__":true,"id":2119},{"__isSmartRef__":true,"id":2154},{"__isSmartRef__":true,"id":2188}],"scripts":[],"id":3368,"renderContextTable":{"__isSmartRef__":true,"id":2223},"shape":{"__isSmartRef__":true,"id":2224},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":2235},"eventHandler":{"__isSmartRef__":true,"id":2236},"_Position":{"__isSmartRef__":true,"id":2237},"eventsAreIgnored":true,"_HandStyle":"default","windowMorph":{"__isSmartRef__":true,"id":2106},"label":{"__isSmartRef__":true,"id":2108},"closeButton":{"__isSmartRef__":true,"id":2119},"menuButton":{"__isSmartRef__":true,"id":2154},"collapseButton":{"__isSmartRef__":true,"id":2188},"priorExtent":{"__isSmartRef__":true,"id":2238},"owner":{"__isSmartRef__":true,"id":2106},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"2108":{"submorphs":[],"scripts":[],"id":3369,"renderContextTable":{"__isSmartRef__":true,"id":2109},"textChunks":[{"__isSmartRef__":true,"id":2110}],"shape":{"__isSmartRef__":true,"id":2112},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":994},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2116},"_Position":{"__isSmartRef__":true,"id":2117},"priorExtent":{"__isSmartRef__":true,"id":2118},"_MaxTextWidth":null,"_MaxTextHeight":14,"evalEnabled":false,"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":10,"_Align":"center","owner":{"__isSmartRef__":true,"id":2107},"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"2109":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2110":{"style":{"__isSmartRef__":true,"id":2111},"chunkOwner":{"__isSmartRef__":true,"id":2108},"storedString":"Tests.js","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2111":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2112":{"_Position":{"__isSmartRef__":true,"id":2113},"renderContextTable":{"__isSmartRef__":true,"id":2114},"_Extent":{"__isSmartRef__":true,"id":2115},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"_BorderRadius":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2113":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2114":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2115":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2116":{"morph":{"__isSmartRef__":true,"id":2108},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2117":{"x":20,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2118":{"x":0,"y":14,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2119":{"submorphs":[{"__isSmartRef__":true,"id":2120}],"scripts":[],"id":3370,"renderContextTable":{"__isSmartRef__":true,"id":2132},"shape":{"__isSmartRef__":true,"id":2133},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2137},"_Position":{"__isSmartRef__":true,"id":2138},"priorExtent":{"__isSmartRef__":true,"id":2139},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":2140},"label":{"__isSmartRef__":true,"id":2120},"owner":{"__isSmartRef__":true,"id":2107},"layout":{"__isSmartRef__":true,"id":2149},"attributeConnections":[{"__isSmartRef__":true,"id":2150},{"__isSmartRef__":true,"id":2152}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"2120":{"submorphs":[],"scripts":[],"id":3371,"renderContextTable":{"__isSmartRef__":true,"id":2121},"textChunks":[{"__isSmartRef__":true,"id":2122}],"shape":{"__isSmartRef__":true,"id":2124},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2128},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2129},"_Position":{"__isSmartRef__":true,"id":2130},"priorExtent":{"__isSmartRef__":true,"id":2131},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2119},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"2121":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2122":{"style":{"__isSmartRef__":true,"id":2123},"morph":{"__isSmartRef__":true,"id":2120},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":2120},"storedString":"X","__LivelyClassName__":"lively.morphic.TextChunk"},"2123":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"2124":{"_Position":{"__isSmartRef__":true,"id":2125},"renderContextTable":{"__isSmartRef__":true,"id":2126},"_Extent":{"__isSmartRef__":true,"id":2127},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2125":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2126":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2127":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2128":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"2129":{"morph":{"__isSmartRef__":true,"id":2120},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2130":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2131":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2132":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2133":{"_Position":{"__isSmartRef__":true,"id":2134},"renderContextTable":{"__isSmartRef__":true,"id":2135},"_Extent":{"__isSmartRef__":true,"id":2136},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2134":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2135":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2136":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2137":{"morph":{"__isSmartRef__":true,"id":2119},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2138":{"x":800,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2139":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2140":{"stops":[{"__isSmartRef__":true,"id":2141},{"__isSmartRef__":true,"id":2143},{"__isSmartRef__":true,"id":2145},{"__isSmartRef__":true,"id":2147}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"2141":{"offset":0,"color":{"__isSmartRef__":true,"id":2142}},"2142":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2143":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2144}},"2144":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2145":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2146}},"2146":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2147":{"offset":1,"color":{"__isSmartRef__":true,"id":2148}},"2148":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2149":{"moveHorizontal":true},"2150":{"sourceObj":{"__isSmartRef__":true,"id":2119},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":2106},"targetMethodName":"getCloseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2151},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2151":{"source":{"__isSmartRef__":true,"id":2119},"target":{"__isSmartRef__":true,"id":2106}},"2152":{"sourceObj":{"__isSmartRef__":true,"id":2119},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2106},"targetMethodName":"initiateShutdown","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2153},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2153":{"source":{"__isSmartRef__":true,"id":2119},"target":{"__isSmartRef__":true,"id":2106}},"2154":{"submorphs":[{"__isSmartRef__":true,"id":2155}],"scripts":[],"id":3372,"renderContextTable":{"__isSmartRef__":true,"id":2167},"shape":{"__isSmartRef__":true,"id":2168},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2172},"_Position":{"__isSmartRef__":true,"id":2173},"priorExtent":{"__isSmartRef__":true,"id":2174},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":2175},"label":{"__isSmartRef__":true,"id":2155},"owner":{"__isSmartRef__":true,"id":2107},"attributeConnections":[{"__isSmartRef__":true,"id":2184},{"__isSmartRef__":true,"id":2186}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"2155":{"submorphs":[],"scripts":[],"id":3373,"renderContextTable":{"__isSmartRef__":true,"id":2156},"textChunks":[{"__isSmartRef__":true,"id":2157}],"shape":{"__isSmartRef__":true,"id":2159},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2163},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2164},"_Position":{"__isSmartRef__":true,"id":2165},"priorExtent":{"__isSmartRef__":true,"id":2166},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2154},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"2156":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2157":{"style":{"__isSmartRef__":true,"id":2158},"morph":{"__isSmartRef__":true,"id":2155},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":2155},"storedString":"M","__LivelyClassName__":"lively.morphic.TextChunk"},"2158":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"2159":{"_Position":{"__isSmartRef__":true,"id":2160},"renderContextTable":{"__isSmartRef__":true,"id":2161},"_Extent":{"__isSmartRef__":true,"id":2162},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2160":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2161":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2162":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2163":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"2164":{"morph":{"__isSmartRef__":true,"id":2155},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2165":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2166":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2167":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2168":{"_Position":{"__isSmartRef__":true,"id":2169},"renderContextTable":{"__isSmartRef__":true,"id":2170},"_Extent":{"__isSmartRef__":true,"id":2171},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2169":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2170":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2171":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2172":{"morph":{"__isSmartRef__":true,"id":2154},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2173":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2174":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2175":{"stops":[{"__isSmartRef__":true,"id":2176},{"__isSmartRef__":true,"id":2178},{"__isSmartRef__":true,"id":2180},{"__isSmartRef__":true,"id":2182}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"2176":{"offset":0,"color":{"__isSmartRef__":true,"id":2177}},"2177":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2178":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2179}},"2179":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2180":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2181}},"2181":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2182":{"offset":1,"color":{"__isSmartRef__":true,"id":2183}},"2183":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2184":{"sourceObj":{"__isSmartRef__":true,"id":2154},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":2106},"targetMethodName":"getMenuHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2185},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2185":{"source":{"__isSmartRef__":true,"id":2154},"target":{"__isSmartRef__":true,"id":2106}},"2186":{"sourceObj":{"__isSmartRef__":true,"id":2154},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2106},"targetMethodName":"showTargetMorphMenu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2187},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2187":{"source":{"__isSmartRef__":true,"id":2154},"target":{"__isSmartRef__":true,"id":2106}},"2188":{"submorphs":[{"__isSmartRef__":true,"id":2189}],"scripts":[],"id":3374,"renderContextTable":{"__isSmartRef__":true,"id":2201},"shape":{"__isSmartRef__":true,"id":2202},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2206},"_Position":{"__isSmartRef__":true,"id":2207},"priorExtent":{"__isSmartRef__":true,"id":2208},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1017},"lighterFill":{"__isSmartRef__":true,"id":2209},"label":{"__isSmartRef__":true,"id":2189},"owner":{"__isSmartRef__":true,"id":2107},"layout":{"__isSmartRef__":true,"id":2218},"attributeConnections":[{"__isSmartRef__":true,"id":2219},{"__isSmartRef__":true,"id":2221}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"2189":{"submorphs":[],"scripts":[],"id":3375,"renderContextTable":{"__isSmartRef__":true,"id":2190},"textChunks":[{"__isSmartRef__":true,"id":2191}],"shape":{"__isSmartRef__":true,"id":2193},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2197},"_ClipMode":"hidden","fixedWidth":false,"_WhiteSpaceHandling":"pre","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2198},"_Position":{"__isSmartRef__":true,"id":2199},"priorExtent":{"__isSmartRef__":true,"id":2200},"_MaxTextWidth":null,"_MaxTextHeight":17,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2188},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_FontSize":8,"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.Text"},"2190":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2191":{"style":{"__isSmartRef__":true,"id":2192},"morph":{"__isSmartRef__":true,"id":2189},"__SourceModuleName__":"Global.lively.morphic.TextCore","chunkOwner":{"__isSmartRef__":true,"id":2189},"storedString":"–","__LivelyClassName__":"lively.morphic.TextChunk"},"2192":{"__SourceModuleName__":"Global.lively.morphic.TextCore","__LivelyClassName__":"lively.morphic.TextEmphasis"},"2193":{"_Position":{"__isSmartRef__":true,"id":2194},"renderContextTable":{"__isSmartRef__":true,"id":2195},"_Extent":{"__isSmartRef__":true,"id":2196},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":293},"_Fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2194":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2195":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2196":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2197":{"x":5,"y":0,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"2198":{"morph":{"__isSmartRef__":true,"id":2189},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2199":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2200":{"x":17,"y":17,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2201":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2202":{"_Position":{"__isSmartRef__":true,"id":2203},"renderContextTable":{"__isSmartRef__":true,"id":2204},"_Extent":{"__isSmartRef__":true,"id":2205},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1016},"_Fill":{"__isSmartRef__":true,"id":1017},"_StrokeOpacity":0,"_BorderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2203":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2204":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2205":{"x":17,"y":17,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2206":{"morph":{"__isSmartRef__":true,"id":2188},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2207":{"x":781,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2208":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2209":{"stops":[{"__isSmartRef__":true,"id":2210},{"__isSmartRef__":true,"id":2212},{"__isSmartRef__":true,"id":2214},{"__isSmartRef__":true,"id":2216}],"vector":{"__isSmartRef__":true,"id":1026},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"2210":{"offset":0,"color":{"__isSmartRef__":true,"id":2211}},"2211":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2212":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2213}},"2213":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2214":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2215}},"2215":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2216":{"offset":1,"color":{"__isSmartRef__":true,"id":2217}},"2217":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"2218":{"moveHorizontal":true},"2219":{"sourceObj":{"__isSmartRef__":true,"id":2188},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":2106},"targetMethodName":"getCollapseHelp","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2220},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2220":{"source":{"__isSmartRef__":true,"id":2188},"target":{"__isSmartRef__":true,"id":2106}},"2221":{"sourceObj":{"__isSmartRef__":true,"id":2188},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2106},"targetMethodName":"toggleCollapse","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2222},"__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"2222":{"source":{"__isSmartRef__":true,"id":2188},"target":{"__isSmartRef__":true,"id":2106}},"2223":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2224":{"_Position":{"__isSmartRef__":true,"id":2225},"renderContextTable":{"__isSmartRef__":true,"id":2226},"_Extent":{"__isSmartRef__":true,"id":2227},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1118},"_Fill":{"__isSmartRef__":true,"id":2228},"_StrokeOpacity":1,"_BorderRadius":"8px 8px 0px 0px","__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"2225":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2226":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2227":{"x":820,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2228":{"stops":[{"__isSmartRef__":true,"id":2229},{"__isSmartRef__":true,"id":2231},{"__isSmartRef__":true,"id":2233}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2229":{"offset":0,"color":{"__isSmartRef__":true,"id":2230}},"2230":{"r":0.8600000000000001,"g":0.8600000000000001,"b":0.8600000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2231":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2232}},"2232":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2233":{"offset":1,"color":{"__isSmartRef__":true,"id":2234}},"2234":{"r":0.8600000000000001,"g":0.8600000000000001,"b":0.8600000000000001,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2235":{"resizeWidth":true,"adjustForNewBounds":true},"2236":{"morph":{"__isSmartRef__":true,"id":2107},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"2237":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2238":{"x":820,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"2239":{"submorphs":[{"__isSmartRef__":true,"id":2240},{"__isSmartRef__":true,"id":2912},{"__isSmartRef__":true,"id":2947},{"__isSmartRef__":true,"id":2499},{"__isSmartRef__":true,"id":2786},{"__isSmartRef__":true,"id":2851},{"__isSmartRef__":true,"id":2870},{"__isSmartRef__":true,"id":2979},{"__isSmartRef__":true,"id":2889},{"__isSmartRef__":true,"id":2987},{"__isSmartRef__":true,"id":2995},{"__isSmartRef__":true,"id":2254},{"__isSmartRef__":true,"id":2288},{"__isSmartRef__":true,"id":2322},{"__isSmartRef__":true,"id":2356},{"__isSmartRef__":true,"id":2390},{"__isSmartRef__":true,"id":2424},{"__isSmartRef__":true,"id":2458}],"scripts":[],"id":29,"renderContextTable":{"__isSmartRef__":true,"id":3006},"shape":{"__isSmartRef__":true,"id":3007},"droppingEnabled":true,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":3012},"eventHandler":{"__isSmartRef__":true,"id":3013},"_Position":{"__isSmartRef__":true,"id":3014},"locationPane":{"__isSmartRef__":true,"id":2240},"codeBaseDirBtn":{"__isSmartRef__":true,"id":2912},"localDirBtn":{"__isSmartRef__":true,"id":2947},"Pane1":{"__isSmartRef__":true,"id":2499},"Pane2":{"__isSmartRef__":true,"id":2786},"Pane3":{"__isSmartRef__":true,"id":2851},"Pane4":{"__isSmartRef__":true,"id":2870},"midResizer":{"__isSmartRef__":true,"id":2979},"sourcePane":{"__isSmartRef__":true,"id":2889},"bottomResizer":{"__isSmartRef__":true,"id":2987},"commentPane":{"__isSmartRef__":true,"id":2995},"ownerWidget":{"__isSmartRef__":true,"id":2252},"owner":{"__isSmartRef__":true,"id":2106},"targetURL":{"__isSmartRef__":true,"id":2497},"__LivelyClassName__":"lively.ide.BrowserPanel","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2240":{"submorphs":[],"scripts":[],"id":30,"renderContextTable":{"__isSmartRef__":true,"id":2241},"textChunks":[{"__isSmartRef__":true,"id":2242}],"shape":{"__isSmartRef__":true,"id":2244},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1134},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2248},"_Position":{"__isSmartRef__":true,"id":2249},"priorExtent":{"__isSmartRef__":true,"id":2250},"_MaxTextWidth":656,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2239},"isInputLine":true,"noEval":true,"styleClass":["Browser_locationInput"],"attributeConnections":[{"__isSmartRef__":true,"id":2251}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2241":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2242":{"style":{"__isSmartRef__":true,"id":2243},"chunkOwner":{"__isSmartRef__":true,"id":2240},"storedString":"http://lively-kernel.org/repository/webwerkstatt/lively/morphic/","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2243":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2244":{"_Position":{"__isSmartRef__":true,"id":2245},"renderContextTable":{"__isSmartRef__":true,"id":2246},"_Extent":{"__isSmartRef__":true,"id":2247},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1133},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2245":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2246":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2247":{"x":656,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2248":{"morph":{"__isSmartRef__":true,"id":2240},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2249":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2250":{"x":656,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2251":{"sourceObj":{"__isSmartRef__":true,"id":2240},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setTargetURL","converter":null,"converterString":"function (value) { return new URL(value) }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2911},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2252":{"buttonCommands":[{"__isSmartRef__":true,"id":2253},{"__isSmartRef__":true,"id":2287},{"__isSmartRef__":true,"id":2321},{"__isSmartRef__":true,"id":2355},{"__isSmartRef__":true,"id":2389},{"__isSmartRef__":true,"id":2423},{"__isSmartRef__":true,"id":2457}],"RootFilters":[{"__isSmartRef__":true,"id":2491}],"Pane1Filters":[{"__isSmartRef__":true,"id":2492},{"__isSmartRef__":true,"id":2493}],"Pane2Filters":[{"__isSmartRef__":true,"id":2494}],"Pane3Filters":[{"__isSmartRef__":true,"id":2495}],"Pane4Filters":[{"__isSmartRef__":true,"id":2496}],"evaluate":true,"targetURL":{"__isSmartRef__":true,"id":2497},"panel":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2498},{"__isSmartRef__":true,"id":2785},{"__isSmartRef__":true,"id":2850},{"__isSmartRef__":true,"id":2869},{"__isSmartRef__":true,"id":2888},{"__isSmartRef__":true,"id":2906}],"SourceString":"module('lively.morphic.Tests').requires('lively.TestFramework', 'lively.morphic.Complete').toRun(function() {\n\nTestCase.subclass('lively.morphic.Tests.TestCase',\n'running', {\n tearDown: function($super) {\n $super();\n this.removeTestWorld();\n },\n},\n'helper', {\n removeTestWorld: function() {\n if (this.world) {\n this.world.remove();\n this.world = null;\n }\n if (this.oldAlert)\n Global.alert = this.oldAlert;\n if (this.existingWorld) {\n this.existingWorld.displayOnCanvas(document.getElementsByTagName('body')[0]);\n lively.morphic.World.currentWorld = this.existingWorld;\n this.existingWorld = null;\n }\n },\n openMorphsInRealWorld: function() {\n this.removeTestWorld();\n },\n createWorld: function() {\n if (this.world) return; // already created\n this.existingWorld = lively.morphic.World.current();\n this.world = lively.morphic.World.createOn(document.body, new Rectangle(0,0,300,300));\n this.oldAlert = Global.alert;\n Global.alert = function (msg) { this.existingWorld.alert(String(msg)) }.bind(this)\n },\n serializeAndDeserializeWorld: function() {\n if (!this.world) {\n alert('No test world created');\n return\n }\n var json = this.world.serializeToJSON();\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n },\n\n},\n'assertion', {\n assertNodeMatches: function(expected, node) {\n var self = this,\n fail = function fail(msg) { self.assert(false, msg) };\n if (!expected) fail('expected is null');\n if (!node) fail('node is null but should be ' + expected.tagName);\n if (expected.tagName != node.tagName) fail(expected.tagName + '!=' + node.tagName);\n if (expected.parentNode && (expected.parentNode !== node.parentNode))\n fail('parent is ' + node.parentNode + ' but should be ' + expected.parentNode);\n\n if (expected.textContent) {\n if (expected.textContent != node.textContent)\n fail('textContent ' + expected.textContent + ' != ' + node.textContent);\n }\n\n if (expected.attributes)\n Properties.forEachOwn(expected.attributes, function(key, expectedValue) {\n var actualValue = node.getAttribute(key);\n if (expectedValue instanceof RegExp) {\n if (!expectedValue.test(actualValue))\n fail('attribute ' + key + ' was ' + actualValue + ' and didn\\'t match ' + expectedValue);\n return\n }\n if (expectedValue != actualValue) {\n fail('attribute ' + key + ' not ' + expectedValue + ' but ' + actualValue);\n }\n });\n if (expected.style)\n Properties.forEachOwn(expected.style, function(key, expected) {\n var actualValue = node.style[key].replace(/ /g, '');\n if (Object.isFunction(expected)) {\n self.assert(expected.call(self, actualValue), 'value ' + actualValue + ' did no match')\n return\n }\n if (expected != actualValue)\n fail('style ' + key + ' not ' + expected + ' but ' + actualValue);\n });\n if (expected.childNodeLength)\n this.assertEquals(expected.childNodeLength, node.childNodes.length, 'childNode.length of ' + node)\n if (expected.childNodes)\n for (var i = 0; i < expected.childNodes.length; i++)\n this.assertNodeMatches(expected.childNodes[i], node.childNodes[i]);\n },\n});\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.WorldTests',\n'testing', {\n testAddWorldToDoc: function() {\n var canvasNode = document.body, bounds = new Rectangle(0, 0, 100, 100),\n world = new lively.morphic.World();\n try {\n world.setBounds(bounds);\n world.displayOnCanvas(canvasNode);\n\n var expected = {tagName: 'div', parentNode: canvasNode, childNodes: [{tagName: 'div'}]};\n this.assertNodeMatches(expected, world.renderContext().getMorphNode());\n } finally {\n world.remove();\n }\n },\n});\n\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.MorphTests',\n'running', {\n setUp: function($super) {\n $super();\n this.createWorld();\n },\n},\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n this.assert(this.world.submorphs.include(m), 'not in submorphs');\n this.assertIdentity(this.world, m.owner, 'owner');\n\n var expected = {\n tagName: 'div', // world morph\n childNodes: [\n {tagName: 'div'}, // world shape\n {tagName: 'div', childNodes: [{tagName: 'div'}]} // m and its shape\n ]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02aUseSVGRenderer: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext());\n\n var expected = {\n tagName: 'div', // world\n childNodes: [\n {tagName: 'div'}, // world's shape\n {tagName: 'div'}, // hand\n {tagName: 'svg', // submorph\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'rect'}]}]}]};\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n test03MorphWithSVGEllipse: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setShape(new lively.morphic.Shapes.Ellipse(new Rectangle(0,0, 30, 30)));\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'svg',\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'ellipse'}]}]}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test04MorphLocalize: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph2.setPosition(pt(10,10));\n this.assertEquals(pt(0,0), morph2.localize(pt(10,10)));\n },\n test04AddMorphBefore: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph(),\n morph3 = new lively.morphic.Morph();\n // Colors to identify the morphs are in correct order\n morph1.setFill(Color.green);\n morph2.setFill(Color.blue);\n morph3.setFill(Color.yellow);\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n this.world.addMorph(morph3, morph2);\n\n morph1.setExtent(pt(200, 200))\n morph2.setExtent(pt(100, 150))\n morph3.setExtent(pt(150, 100))\n\n // order back to front: morph1, morph3, morph2 \n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph1.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph3.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph2.getFill().toString()}}]},\n {tagName: 'div'}, // hand\n ]}\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n\n testMorphBounds: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph1.setBounds(new Rectangle(100, 100, 40, 40));\n morph2.setBounds(new Rectangle(20, 10, 40, 40));\n this.assertEquals(new Rectangle(100, 100, 60, 50), morph1.getBounds());\n },\n test07MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n shape = new lively.morphic.Shapes.Rectangle(bounds);\n this.assertEquals(bounds, shape.getBounds(), 'shape bounds');\n var morph = new lively.morphic.Morph(shape);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n test08aCreateMorphWithLinearGradient: function() {\n var morph = new lively.morphic.Morph();\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.LinearGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], \"northSouth\"));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(linear,0%0%,0%100%,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test08bCreateMorphWithradialGradient: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.RadialGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], pt(0.5,0.3)));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(radial,50%30%,0,50%50%,25,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test09BorderColorAndWidth: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderColor(Color.green);\n morph.setBorderWidth(2.5);\n morph.setStrokeOpacity(0.5);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {\n // FIXME float conversion in style makes it hard to test directly\n 'border': function(result) { // \"2.5px solid rgba(0,204,0,0.5)\"\n return result.include('2.5px') && result.include('solid') && result.include('rgba(0,204')\n }\n }\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test10BorderRadiusHTML: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderRadius(3);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: { 'border-top-left-radius': '3px3px'}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test12ModifyOrigin: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setOrigin(pt(50, 10));\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test13ModifyOriginWithTransformation: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setRotation((90).toRadians()); // apply some transformation\n morph.setOrigin(pt(50, 10)); // coordinates local to morph\n this.assertMatches(rect(pt(-20, 0), pt(0, 100)).toString(), morph.bounds().toString(), 'setOrigin wrong')\n \n morph.setRotation(0);\n\n this.assertEquals(pt(-60, 40).extent(pt(100,20)), morph.bounds());\n },\n test14ModifyOriginWithScale: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 50, 10);\n this.world.addMorph(morph);\n\n morph.setScale(2)\n morph.setOrigin(pt(25, 5)); // set origin is in local shape coordinates\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test15ModifyOriginWithSubmorphs: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n var submorph = lively.morphic.Morph.makeRectangle(0, 0, 10, 10); \n morph.addMorph(submorph)\n submorph.setPosition(pt(30,30))\n\n\n morph.setOrigin(pt(20, 20));\n\n this.assertEquals(pt(10,10), submorph.getPosition(), \"submorph pos did not adjust\");\n },\n\n test16MorphsContainingPoint: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(20, 20, 30, 30), \n subsubmorph = lively.morphic.Morph.makeRectangle(25, 25, 5, 5),\n morph2 = lively.morphic.Morph.makeRectangle(48, 48, 100, 100);\n this.world.addMorph(morph)\n morph.addMorph(submorph)\n submorph.addMorph(subsubmorph)\n this.world.addMorph(morph2)\n\n var result, expected;\n\n result = morph.morphsContainingPoint(pt(-1,-1));\n this.assertEquals(0, result.length, 'for ' + pt(-1,-1));\n\n result = morph.morphsContainingPoint(pt(1,1));\n this.assertEquals(1, result.length, 'for ' + pt(1,1));\n this.assertEquals(morph, result[0], 'for ' + pt(1,1));\n\n result = morph.morphsContainingPoint(pt(40,40));\n this.assertEquals(2, result.length, 'for ' + pt(40,40));\n this.assertEquals(submorph, result[0]);\n this.assertEquals(morph, result[1]);\n\n result = morph.morphsContainingPoint(pt(45,45));\n this.assertEquals(3, result.length, 'for ' + pt(45,45));\n this.assertEquals(subsubmorph, result[0]);\n this.assertEquals(submorph, result[1]);\n this.assertEquals(morph, result[2]);\n\n result = this.world.morphsContainingPoint(pt(48,48));\n this.assertEquals(5, result.length, 'for ' + pt(48,48));\n this.assertEquals(morph2, result[0]);\n this.assertEquals(subsubmorph, result[1]);\n this.assertEquals(submorph, result[2]);\n this.assertEquals(morph, result[3]);\n this.assertEquals(this.world, result[4]);\n },\n test17MorphsContainingPointWithAddMorphFront: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n var result = this.world.morphsContainingPoint(pt(1,1));\nthis. openMorphsInRealWorld()\n// inspect(result)\n this.assertEquals(3, result.length);\n // this.assertEquals(this.world.firstHand(), result[0], 'for ' + pt(1,1));\n\n this.assertEquals(morph1, result[0], 'for ' + pt(1,1));\n this.assertEquals(morph2, result[1], 'for ' + pt(1,1));\n },\n test18OrderOfMorphsOnScrennAndInSubmorphArrayMatches: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n this.assertIdentity(this.world.submorphs[0], morph2, 'morph2 not @0')\n this.assertIdentity(this.world.submorphs[1], morph1, 'morph1 not @1')\n },\n test19MorphsContainingPointDosNotIncludeOffsetedOwner: function() {\n var owner = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(110, 10, 90, 90), \n other = lively.morphic.Morph.makeRectangle(100, 0, 100, 100);\n\n owner.name = 'owner'; submorph.name = 'submorph'; other.name = 'other';\n this.world.addMorph(owner)\n owner.addMorph(submorph)\n this.world.addMorphBack(other)\n\n var result = this.world.morphsContainingPoint(pt(150,50));\n this.assertEquals(3, result.length, 'for ' + pt(150,50));\n this.assertEquals(this.world, result[2], 'for 2');\n this.assertEquals(other, result[1], 'for 1');\n this.assertEquals(submorph, result[0], 'for 0');\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.EventTests',\n'testing', {\n xtest05DropMorph: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n // this.world.addHandMorph();\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n morph1.setBounds(new Rectangle(0,0, 100, 100));\n morph2.setBounds(new Rectangle(0,0, 80, 80));\n morph1.applyStyle({fill: Color.red});\n morph2.applyStyle({fill: Color.green});\n\n // is already done by style settings\n // this.world.enableDropping();\n // morph1.enableDropping();\n // morph1.enableGrabbing();\n // morph2.enableDropping();\n // morph2.enableGrabbing();\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morph2.renderContext().getMorphNode(), button: 0});\n\n this.assert(this.world.firstHand().submorphs.include(morph2), 'morph not grabbed');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(20,20), target: this.world.renderContext().getMorphNode()});\n\n this.assert(morph1.submorphs.include(morph2), 'morph not dropped on morph2'); \n },\n test01DragMorph: function() {\n var dragStarted = false,\n dragMoved = false,\n dragEnded = false,\n morph = new lively.morphic.Morph(),\n morphNode = morph.renderContext().getMorphNode();\n this.world.addMorph(morph);\n morph.setBounds(new Rectangle(0,0, 100, 100));\n morph.applyStyle({fill: Color.red, enableDragging: true});\n\n morph.onDragStart = function() { dragStarted = true }\n morph.onDrag = function() { dragMoved = true }\n morph.onDragEnd = function() { dragEnded = true }\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morphNode, button: 0});\n this.assert(!dragStarted, 'drag already started after mousedown');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(25,25), target: morphNode, button: 0});\n this.assert(dragStarted, 'drag not started after mousedown and mousemove');\n this.assert(!dragMoved, 'drag already moved at dragStart');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragMoved, 'drag not moved after mousemove');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragEnded, 'dragEnd not called');\n },\n test02RelayMouseEventsToMorphBeneath: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,100,100),\n morph2 = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n\n morph2.relayMouseEventsToMorphBeneath();\n\n lively.morphic.EventSimulator.doMouseEvent(\n {type: 'mousedown', pos: pt(20,20), target: morph2, button: 0});\n this.assertIdentity(morph1, this.world.clickedOnMorph);\n },\n\n});\n \nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CopyMorphTests',\n'testing', {\n test01CopySimpleMorph: function() {\n var m = new lively.morphic.Morph()\n m.setBounds(new Rectangle(100, 100, 40, 40));\n var m2 = m.copy();\n this.assert(m !== m2, 'copied morph is identical to original morph')\n this.assertEquals(new Rectangle(100, 100, 40, 40), m2.getBounds());\n },\n test02ReferencedMorphThatIsNotASubmorphIsNotCopied: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.addMorph(m2)\n m1.other = m3;\n var copy = m1.copy();\n this.assert(copy !== m1, 'copied morph is identical to original morph');\n this.assert(copy.submorphs[0] instanceof lively.morphic.Morph, 'submorph not copied');\n this.assert(copy.submorphs[0] !== m2, 'copied submorph is identical to original submorph');\n this.assert(copy.other === m3, 'referenced morph that is not a submorph is not identical')\n },\n test03OwnerIsNotCopied: function() {\n var m = new lively.morphic.Morph();\n this.world.addMorph(m);\n var copy = m.copy();\n this.assert(!copy.owner, 'owner was copied');\n },\n test04CopyMorphTreeWithEventHandlers: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.enableGrabbing();\n m2.enableGrabbing();\n m3.enableGrabbing();\n m1.addMorph(m2)\n m2.addMorph(m3)\n this.world.addMorph(m1);\n var copy = m1.copy();\n this.world.addMorph(copy);\n this.assertEquals(2+1, this.world.submorphs.length); // +1 for hand\n this.assertEquals(1, copy.submorphs.length);\n this.assertEquals(1, copy.submorphs[0].submorphs.length);\n },\n test05CopySetsNewTargetForScripts: function() {\n var m1 = new lively.morphic.Morph();\n m1.startStepping(20, 'rotateBy', 0.1);\n var copy = m1.copy();\n\n this.assertIdentity(m1, m1.scripts[0].target, 'original target changed');\n this.assertIdentity(copy, copy.scripts[0].target, 'copy target changed');\n },\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphTests',\n'testing', {\n test01TextMorphHTML: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.setTextString('Foo');\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div', childNodes: [ // shape\n {tagName: 'div', textContent: 'Foo'}] // text node\n }, \n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test02TextMorphSVG: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setTextString('Foo');\n var expected = {\n tagName: 'g',\n childNodes: [\n {tagName: 'rect'}, // shape\n {tagName: 'text', textContent: 'Foo'} // text node\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test03TextStringIsConnectable: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n var resultObj = {result: null};\n connect(m, 'textString', resultObj, 'result');\n m.setTextString('Foo');\n this.assertEquals('Foo', resultObj.result);\n },\n test04GrowToFit: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 10, 20));\n this.world.addMorph(m);\n m.setTextString('a really long string longer than 10px')\n m.applyStyle({fixedWidth: false});\n this.assert(m.getExtent().x > 10, 'did not grow to fit text ' + m.bounds().width);\n },\n\n test05SetSelectionRange: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(0,1);\n this.assertEquals('1', m.selectionString());\n m.setSelectionRange(0,3);\n this.assertEquals('123', m.selectionString());\n m.setSelectionRange(-99,m.textString.length+10);\n this.assertEquals('123\\t567\\n9', m.selectionString());\n },\n test05bSetSelectionRangeRightToLeft: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(3, 0);\n this.assertEquals('123', m.selectionString());\n this.assertEqualState([3,0], m.getSelectionRange());\n },\n\n test06ModifySelectedLinesInsertsAtCorrectPosition: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('This\\nis\\na\\ntest');\n m.setSelectionRange(0,9);\n this.assertEquals('This\\nis\\na', m.selectionString())\n m.modifySelectedLines(function(ea) { return '+' + ea });\n this.assertEquals('+This\\n+is\\n+a\\ntest', m.textString);\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ScrollTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 60, 200));\n this.world.addMorph(this.text);\n this.text.applyStyle({clipMode: 'scroll', fixedHeight: true})\n\n // 10x test, 9x \\n\\n\\n\n var str = Array.range(1,10).collect(function(i) { return 'test'+i }).join('\\n\\n\\n')\n this.text.setTextString(str);\n },\n},\n'testing', {\n\n test01ScrollSelectionAtBottomIntoView: function() {\n var m = this.text;\n\n // scroll down to be in scroll bounds\n m.setScroll(0, 0) // scroll to top\n m.setSelectionRange(m.textString.length-6,m.textString.length) // select\"test10\"\n m.scrollSelectionIntoView()\n this.assertMatches([0, 321], m.getScroll(), 'does not scroll down');\n\n // scroll up to be in scroll bounds\n m.setSelectionRange(0,5) // select \"test1\"\n\n m.scrollSelectionIntoView()\n this.assertMatches([0,2], m.getScroll(), 'does not scroll up');\n },\n test02ScrollWorld: function() {\n this.world.setExtent(pt(10000, 10000));\n this.world.setScroll(0, 0);\n this.world.setScroll(0, 10);\n this.world.setScroll(0, 10)\n\n this.assertMatches([0,10], this.world.getScroll())\n },\n\n\n});\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphRichTextTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // cop.withLayers([TextDevLayer], function() {\n // return new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // })\n // this.text.setWithLayers([TextDevLayer]);\n this.world.addMorph(this.text);\n },\n checkRunArray: function(expectedRunArray) {\n this.assertMatches(expectedRunArray.asArray(), this.text.textStyle.asArray());\n },\n checkChunks: function(expectedChunks) {\n this.assertMatches(expectedChunks, this.text.getTextChunks());\n },\n\n checkDOM: function(expectedTextNodes) {\n // check what was actually rendered\n var expected = {\n tagName: 'div',\n childNodeLength: expectedTextNodes.length,\n childNodes: expectedTextNodes\n };\n this.assertNodeMatches(expected, this.text.renderContext().textNode);\n },\n\n\n},\n'testing', {\n test01MorphHasTextChunk: function() {\n// this. openMorphsInRealWorld()\n// inspect(this.text)\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('', chunks[0].textString);\n chunks[0].textString = 'foo';\n this.assertEquals('foo', this.text.textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test02MorphHasTextChunkWhenTextStringIsSet: function() {\n this.text.textString = 'foo'\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('foo', chunks[0].textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test03SplitAndJoinTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n var after = chunk.splitAfter(3);\n this.assertEquals('test', after.textString, 'after string');\n this.assertEquals('ein', chunk.textString, 'chunk string');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n\n chunk.joinWithNext();\n this.assertEquals('eintest', chunk.textString);\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}]);\n\n var before = chunk.splitBefore(3);\n this.assertEquals('ein', before.textString, 'before string');\n this.assertEquals(2, this.text.getTextChunks().length);\n },\n test03bCoalesceChunks: function() {\n this.text.setTextString('test');\n this.text.firstTextChunk().splitAfter(2);\n this.text.coalesceChunks()\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test03cSplitAtFrontAndBack: function() {\n this.text.setTextString('a');\n var after = this.text.firstTextChunk().splitAfter(1);\n this.assertEquals('', after.textString, 'splitAfter');\n var before = this.text.firstTextChunk().splitBefore(0);\n this.assertEquals('', before.textString, 'splitBefore');\n this.assertEquals(3, this.text.getTextChunks().length);\n },\n test03cSplittedChunkGetsStyle: function() {\n this.text.setTextString('abcdef');\n var chunk = this.text.firstTextChunk();\n chunk.style.setFontWeight('bold');\n var after = this.text.firstTextChunk().splitAfter(3);\n this.assertEquals('bold', after.style.getFontWeight());\n },\n\n\n\n test04SliceTextChunksSimple: function() {\n this.text.setTextString('eintest');\n var sliced = this.text.sliceTextChunks(0,3);\n this.assertEquals(1, sliced.length, 'sliced not oke');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n },\n\n test04SliceTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n chunk.splitAfter(3);\n var sliced = this.text.sliceTextChunks(2,6);\n this.assertEquals(4, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ei'},\n {tagName: 'span', textContent: 'n'},\n {tagName: 'span', textContent: 'tes'},\n {tagName: 'span', textContent: 't'}])\n },\n test04SliceTextChunksAgain: function() {\n this.text.setTextString('abc');\ndebugger\n var sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'first');\n sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'second');\n },\n\n test05StyleChunk: function() {\n this.text.setTextString('test');\n var chunk = this.text.firstTextChunk();\n chunk.styleText({fontWeight: 'bold'});\n this.checkDOM([{tagName: 'span', style: {fontWeight: 'bold'}}]);\n },\n test06MakeTextBold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n test07MakeTextBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 2);\n this.text.emphasize({fontWeight: 'normal'}, 0, 2);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test08ToggleBoldnessComplete: function() {\n this.text.setTextString('eintest');\n this.text.toggleBoldness(1, 6);\n this.checkDOM([\n {tagName: 'span', textContent: 'e'},\n {tagName: 'span', textContent: 'intes'},\n {tagName: 'span', textContent: 't'}])\n this.text.toggleBoldness(1, 6);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test09ChunksAreSerializable: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.text.name = 'testText';\n this.serializeAndDeserializeWorld();\n this.text = this.world.get('testText');\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n\n },\n test10ConvertSelectionRangeForEmphasis: function() {\n // the indexes used by text selection are currently different\n // to those used for emphasizing the text\n var testValues = [\n {sel: [0,0], emph: [0,0]},\n {sel: [0,7], emph: [0,7]},\n {sel: [1,1], emph: [1,1]},\n {sel: [2,0], emph: [0,2]},\n {sel: [8,0], emph: [0, 8]},\n {sel: [4,7], emph: [4,7]}];\n testValues.forEach(function(selAndEmph) {\n this.assertEqualState(\n selAndEmph.emph,\n this.text.convertSelectionRangeForEmphasis(selAndEmph.sel),\n 'sel conversion of ' + selAndEmph.sel);\n }, this)\n },\n test11ToggleBoldnessWithChunkWithMultipleTextNodes: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n this.text.insertAtCursor('foo');\n this.assertEqual('einfootest', this.text.textString, 'insert')\n this.checkDOM([\n {tagName: 'span', textContent: 'einfootest', childNodes: [\n {tagName: undefined, textContent: 'ein'},\n {tagName: undefined, textContent: 'foo'},\n {tagName: undefined, textContent: 'test'}\n ]},\n ])\n\n this.text.toggleBoldness(1, 9);\n this.checkDOM([\n {tagName: 'span', textContent: 'e', childNodes: [{textContent: 'e'}]},\n {tagName: 'span', textContent: 'infootes', childNodes: [{textContent: 'infootes'}]},\n {tagName: 'span', textContent: 't', childNodes: [{textContent: 't'}]},\n ])\n },\n test11FixChunksShouldKeepSlection: function() {\n this.text.setTextString('eintest');\n // add a text outside of chunks manually\n this.text.renderContext().textNode.appendChild(document.createTextNode('test'))\n this.text.setSelectionRange(2,5)\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest', childNodes: [\n {tagName: undefined, textContent: 'eintesttest'},\n ]},\n ])\n var range = this.text.getSelectionRange()\n this.assert(range, 'no selection range after fixChunks!')\n this.assertMatches([2, 5], range) // Inconsistency with selection ranges?\n },\n test12GetAndSetSelectionRangeHaveEqualValues: function() {\n this.text.setTextString('eintest');\n this.text.setSelectionRange(1, 6)\n this.assertEquals('intes', this.text.selectionString());\n this.assertMatches([1,6], this.text.getSelectionRange());\n },\n test13InsertedTextBetweenChunksIsAssimilated: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n\n var chunks = this.text.getTextChunks();\n this.assertEqual(2, chunks.length, 'test preparation: chunks not OK')\n\n var newNode = XHTMLNS.create('b')\n newNode.textContent = 'foo';\n\n this.text.renderContext().textNode.insertBefore(newNode, chunks[1].getChunkNode());\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abcfoo'},\n {tagName: 'span', textContent: 'def'},\n ])\n },\n test14GetEmphasisAt: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 1, 3);\n\n var emph, expected = ['normal', 'bold', 'bold', 'normal']\n expected.forEach(function(expectedFontWeight, i) {\n var emph = this.text.getEmphasisAt(i)\n this.assertEquals(expectedFontWeight, emph.getFontWeight(), i);\n },this)\n },\n\n test15GetChunkAndLocalIndex: function() {\n this.text.setTextString('abcdef');\n this.text.sliceTextChunks(1,3);\n this.checkDOM([\n {tagName: 'span', textContent: 'a'},\n {tagName: 'span', textContent: 'bc'},\n {tagName: 'span', textContent: 'def'},\n ]);\n\n var chunks = this.text.getTextChunks(), result;\n \n result = this.text.getChunkAndLocalIndex(0);\n this.assertEquals(chunks[0], result[0]); // test for chunk\n this.assertEquals(0, result[1]); // test for local index\n\n result = this.text.getChunkAndLocalIndex(1); // if chunks ends at idx we extend it\n this.assertEquals(chunks[0], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(2);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(1, true);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(0, result[1])\n },\n test16AddLink: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({uri: 'http://foo.com'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein', style: {uri: 'http://foo.com'}}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {textDecoration: 'underline'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test17AddLinkMakeBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n\n this.text.emphasize({uri: 'test'}, 3, 7)\n this.text.emphasize({fontWeight: 'bold'}, 0, 4)\n this.text.emphasize({fontWeight: 'normal'}, 0, 4)\n\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test', style: {textDecoration: 'underline'}}])\n },\n test18LinkifiedChunkShouldKeepLinkWhenTextStringChanges: function() {\n this.text.setTextString('foo');\n this.text.emphasize({uri: 'test'}, 0, 3);\n\n this.text.firstTextChunk().textString = 'bar'\n\n this.checkChunks([{textString: 'bar', style: {uri: 'test'}}])\n\n this.checkDOM([{\n tagName: 'span',\n textContent: 'bar',\n style: {textDecoration: 'underline'}\n }])\n },\n test19FixChunksShouldRemoveElements: function() {\n this.text.setTextString('eintest');\n\n // this happens when pasting rich text on windows, for now remove RT attributes\n var elem = XHTMLNS.create('a');\n elem.href = 'http://foo.com';\n elem.textContent = 'test';\n\n this.text.firstTextChunk().getChunkNode().appendChild(elem);\n\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest',\n // childNodes: [{tagName: undefined, textContent: 'eintesttest'}]\n },\n ])\n },\n test20HandleSplittedSpanNodes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('ac');\n\n var span = XHTMLNS.create('span');\n span.textContent = 'a';\n textNode.insertBefore(span, this.text.firstTextChunk().getChunkNode());\n\n var text = NodeFactory.createText('b');\n textNode.insertBefore(text, this.text.firstTextChunk().getChunkNode());\n\n this.text.firstTextChunk().textString = 'c';\n\n this.text.fixChunks();\n\n this.checkDOM([{tagName: 'span', textContent: 'abc'}]);\n },\n test21HandleSplittedSpanNodesAndTextAttributes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('abc');\n\n this.text.emphasize({fontWeight: 'bold'}, 1,3);\n var chunks = this.text.getTextChunks();\n\n var span = XHTMLNS.create('span');\n span.textContent = 'b';\n textNode.insertBefore(span, chunks.last().getChunkNode());\n // abbc\n\n var text = NodeFactory.createText('x');\n textNode.insertBefore(text, chunks.last().getChunkNode());\n // abxbc\n\n chunks.last().textString = 'c';\n // abxc\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abx'},\n {tagName: 'span', textContent: 'c', style: {fontWeight: 'bold'}}]);\n },\n test22ReclaimRemovedSpanNodesOnPaste: function() {\n // this happens when pasting normal text on Mac OS after a chunk\n // the span node of the chunk that is pasted into is removed and the chunkNode\n // has no parent anymore. The abandoned chunkNode should reclaim its old text + the isnerted\n\n // add new content\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\n\\nbar\\n\\nbaz');\n\n this.text.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.emphasize({fontWeight: 'bold'}, 10,13);\n var chunks = this.text.getTextChunks();\n\n // remove middle chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var text = NodeFactory.createText('\\n\\nbar zurp\\n\\n');\n textNode.insertBefore(text, chunks[2].getChunkNode());\n\n this.assertEquals('foo\\n\\nbar zurp\\n\\nbaz',textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: '\\n\\nbar zurp\\n\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'baz', style: {fontWeight: 'bold'}}]);\n\n },\n test23ReclaimRemovedChunkNodeAndReapplyTextAttributes: function() {\n // this happens when pasting normal text on Mac OS in attributed text (e.g. bold)\n // Chrome tries to complete render the span itself, e.g. using \n // the chunkNode is removed but the chunk still exists\n // this tests if the chunk can reclaim the text and set it's attributes again\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\nbar');\n\n this.text.emphasize({fontWeight: 'bold'}, 4,7);\n var chunks = this.text.getTextChunks();\n\n // remove last chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var b = XHTMLNS.create('b');\n b.textContent = 'morebar'\n textNode.appendChild(b);\n\n this.assertEquals('foo\\nmorebar', textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'morebar', style: {fontWeight: 'bold'}}]);\n }, \n\n test22EmphasizeRegex: function() {\n this.text.setTextString(\"a1b2c\");\n this.text.emphasizeRegex(/[0-9]/g, {color: Color.red});\n this.checkChunks([\n {textString: 'a', style: {color: null}},\n {textString: '1', style: {color: Color.red}},\n {textString: 'b', style: {color: null}},\n {textString: '2', style: {color: Color.red}},\n {textString: 'c', style: {color: null}},\n ])\n },\n richTextPasteData: 'ein test',\n\n test23aRichTextPaste: function() {\n var pastedText = this.richTextPasteData,\n rt = lively.morphic.HTMLParser.pastedHTMLToRichText(pastedText);\n this.assertEquals(2, rt.textChunks.length);\n this.assertEquals('ein ', rt.textChunks[0].textString);\n this.assertEquals('test', rt.textChunks[1].textString);\n this.assertEquals('normal', rt.textChunks[0].style.getFontWeight());\n this.assertEquals('bold', rt.textChunks[1].style.getFontWeight());\n \n },\n test24aInsertTextChunks: function() {\n this.text.setTextString('ein');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('test')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n test24bInsertTextChunks: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('foo')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'foo'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n\n test25SlicingTextChunksWithRangeWithLengthZero: function() {\n this.text.setTextString('ein');\n var newChunk = this.text.sliceTextChunks(3,3);\n this.assertEquals(2, this.text.textChunks.length)\n this.assertIdentity(newChunk[0], this.text.textChunks.last())\n },\n\n\n\n});\nlively.morphic.Tests.TextMorphRichTextTests.subclass('lively.morphic.Tests.RichTextTests',\n'testing', {\n test01CreateRichText: function() {\n var rt = new lively.morphic.RichText('test');\n this.text.setRichText(rt);\n this.assertEqual('test', this.text.textString)\n },\n test02GetRichText: function() {\n this.text.textString = 'test';\n var rt = this.text.getRichText();\n this.assertEqual('test', rt.textString)\n },\n test03EmphasizeRichText: function() {\n var rt = new lively.morphic.RichText('eintest');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.assertEquals(2, rt.textChunks.length, 'chunks not created in rich text')\n this.text.setRichText(rt);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test04InsertInText: function() {\n var rt = new lively.morphic.RichText('foo');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.setTextString('einxtest');\n this.text.setSelectionRange(3,4);\n rt.replaceSelectionInMorph(this.text)\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'foo'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ButtonMorphTests',\n'testing', {\n test01MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n morph = new lively.morphic.Button(bounds);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ListMorphTests',\n'testing', {\n test01SetAndRetrieveStringItems: function() {\n var list = new lively.morphic.List(new Rectangle(0, 0, 100, 100), ['1', '2', '3']);\n this.assertEqualState(['1', '2', '3'], list.itemList);\n list.updateList(['foo']);\n this.assertEqualState(['foo'], list.itemList);\n },\n test02SelectAt: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['first']);\n this.world.addMorph(morph);\n morph.selectAt(0);\n\n this.assertEquals('first', morph.selection);\n // var morphNode = morph.renderContext().getMorphNode();\n // this.doMouseEvent({type: 'mousedown', pos: pt(10,8), target: morphNode, button: 0});\n },\n test03SelectListItem: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(morph);\n morph.updateList([\n {isListItem: true, string: 'foo', value: 23},\n {isListItem: true, string: 'bar', value: 24}])\n morph.selectAt(1);\n this.assertEquals(24, morph.selection);\n },\n\n test04ListMorphBoundsOnCreationInHTML: function() {\n var owner = lively.morphic.Morph.makeRectangle(0,0,10,10),\n list = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['1', '2', '3']);\n\n owner.addMorph(list)\n this.world.addMorph(owner);\n\n // FIXME depends on HTML\n this.assert(list.renderContext().listNode.clientHeight > 0, 'list node height is wrong')\n },\n test05ListMorphKeepsSelectionHighlightOnUpdateList: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(list);\n\n list.updateList([1,2,3]);\n list.setSelection(2);\n list.updateList([1,2,3]);\n\n var expected = {\n tagName: 'option',\n // attributes: {selected: true} // for some reason this does not work..\n };\n this.assertNodeMatches(expected, list.renderContext().subNodes[1]);\n this.assert(list.renderContext().subNodes[1].selected, 'not selected');\n },\n test06SetSelectionWithListItems: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [{isListItem: true, string: 'foo', value: 23}];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(23);\n\n this.assertEquals(0, list.selectedLineNo);\n },\n testAddMorphDuplicatesListsBug: function() {\n var list = new lively.morphic.List(new Rectangle(0,0,100,100), [1,2,3]),\n rect = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(list);\n this.world.addMorph(rect);\n rect.addMorph(list);\n\n this.assert(!this.world.submorphs.include(list), 'list in world submorphs')\n this.assert(rect.submorphs.include(list), 'list not in rect submorphs')\n },\n testUpdateListOnSelectionHighlightsSelectionCorrectly: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [1, 2, 3];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(2);\n this.assertEquals(1, list.selectedLineNo);\n\n connect(list, 'selection', list, 'onSelect')\n list.addScript(function onSelect(sel) { this.updateList(this.getList()) });\n\n list.setSelection(3);\n this.assertEquals(2, list.selectedLineNo);\n // FIXME implementation & HTML specific\n var isSelected = list.renderContext().subNodes[2].selected;\n this.assert(isSelected !== '', 'highlight wrong')\n },\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.AppTests',\n'testing', {\n test01ConfirmDialog: function() {\n var answer = false,\n dialog = this.world.confirm('Foo?', function(bool) { answer = bool });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'no button does not work')\n dialog.okButton.simulateButtonClick();\n this.assert(answer, 'yes button does not work')\n },\n test02PromptDialog: function() {\n var answer = 'nothing',\n dialog = this.world.prompt('Foo?', function(input) { answer = input });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'cancel button does not work')\n dialog.inputText.setTextString('test input')\n dialog.okButton.simulateButtonClick();\n this.assertEquals('test input', answer, 'ok button does not work')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CanvasRenderingTests',\n'testing', {\n test01UseCanvasRendererForSimpleMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.Canvas.RenderContext())\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02MorphAndSubmorphWithCanvas: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph()\n this.world.addMorph(m1);\n m1.renderUsing(new lively.morphic.Canvas.RenderContext())\n m1.addMorph(m2);\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}],\n };\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n});\nTestCase.subclass('lively.morphic.Tests.SimilitudeTests',\n'testing', {\n test01PointTransform: function() {\n var globalPoint = pt(20,10),\n globalTransform = new lively.morphic.Similitude(pt(0,0), 0, pt(1,1)),\n localTransform = new lively.morphic.Similitude(pt(5,10), 0, pt(1,1)),\n globalizedInvertedLocal = localTransform.preConcatenate(globalTransform).createInverse(),\n matrix = globalTransform.preConcatenate(globalizedInvertedLocal);\n this.assertEquals(pt(15, 0), globalPoint.matrixTransform(matrix))\n },\n});\nAsyncTestCase.subclass('lively.morphic.Tests.ScriptTests',\n'testing', {\n test01StartAndStopTicking: function() {\n var n = 0, script = new lively.morphic.FunctionScript(function() { script.stop(); n++; });\n script.startTicking(10);\n this.delay(function() {\n this.assertEquals(1, n, 'Script not run once');\n this.done();\n }, 40);\n },\n test02SuspendAndContinue: function() {\n var n = 0,\n script = lively.morphic.Script.forFunction(function() { n++; });\n script.startTicking(10);\n this.delay(function() { this.assertEquals(1, n, 'Script not run once'); script.suspend() }, 15);\n this.delay(function() { this.assertEquals(1, n, 'Script not suspended'); script.resume() }, 25);\n this.delay(function() {\n script.stop();\n this.assertEquals(2, n, 'Script not continued');\n this.done();\n }, 40);\n },\n test03MorphStartStepping: function() {\n var m = new lively.morphic.Morph(),\n arg = {callCount: 0};\n m.someFunction = function(arg) { arg.callCount++ };\n\n m.startStepping(10, 'someFunction', arg);\n this.delay(function() {\n m.remove();\n this.assertEquals(1, arg.callCount, 'someFunction not run once');\n }, 15);\n this.delay(function() {\n this.assertEquals(1, arg.callCount, 'arg call count changed although morph was removed');\n this.done();\n }, 30);\n },\n test04ScriptEquals: function() {\n var cb = function() { return 23 },\n script1 = new lively.morphic.FunctionScript(cb);\n script2 = new lively.morphic.FunctionScript(cb);\n this.assert(script1.equals(script1), 'identity not working');\n this.assert(script1.equals(script2), 'FunctionScript equals');\n\n script1 = new lively.morphic.TargetScript(this, 'foo', 33);\n script2 = new lively.morphic.TargetScript(this, 'foo', 44);\n this.assert(script1.equals(script1), 'identity not working Target');\n this.assert(script1.equals(script2), 'TargetScript equals');\n\n this.done()\n },\n test05StartSteppingChecksIfScriptIsThere: function() {\n var m = new lively.morphic.Morph();\n m.someFunction = function(arg) { return 33 };\n\n m.startStepping(10, 'someFunction');\n m.startStepping(20, 'someFunction');\n\n this.assertEquals(1, m.scripts.length, 'script added twice');\n this.assertEquals(20, m.scripts[0].tickTime, 'tickTime not OK');\n \n this.done();\n },\n\n\n\n\n\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.SerializationTests',\n'testing', {\n test01SerializeSimpleWorld: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n this.world.addMorph(m1);\n m1.setName('SomeMorph');\n var json = lively.persistence.Serializer.serialize(this.world)\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n this.assertEquals(2, this.world.submorphs.length) // m1 and hand;\n this.assert(this.world.get('SomeMorph'), 'does not find morph with name from m1');\n this.assert(m1 !== this.world.submorphs[1], 'morphs are identical!!!');\n },\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.HaloTests',\n'testing', {\n test01ShowHalosForMorph: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(50,50, 100, 100);\n this.world.addMorph(m1);\n m1.showHalos();\n this.assertIdentity(m1, this.world.currentHaloTarget, 'halo target');\n this.assert(m1.halos.length > 0, 'morph has no halos?');\n },\n test02HalosStayInVisibleBounds: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n m1.align(m1.bounds().topRight(), this.world.bounds().topRight());\n this.world.addMorph(m1);\n m1.showHalos(); \n m1.halos.forEach(function(ea) {\n if (ea.constructor == lively.morphic.OriginHalo) return;\n this.assert(this.world.visibleBounds().containsRect(ea.bounds()), 'halo ' + ea + ' not in visibleBounds')\n }, this)\n },\n testTransformRectSoThatItFitsInOuter: function() {\n var outer, r, result;\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(0,0, 10, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(20,30, 10, 20), result);\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(40,40, 10, 12);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(r, result);\n\n outer = new Rectangle(20,30, 80, 70);\n r = new Rectangle(90,90, 20, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(90,90, 10, 10), result);\n },\n\n\n});\n\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ImageTests',\n'testing', {\n testImageMorphHTML: function() {\n var url = 'http://lively-kernel.org/repository/webwerkstatt/media/hpi_logo.png',\n morph = new lively.morphic.Image(new Rectangle(0,0,100,100), url) \n this.world.addMorph(morph);\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'img', attributes: {src: url}}],\n };\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode()); \n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.MenuTests',\n'testing', {\n testWrongSubMenuItems: function() {\n var menu = lively.morphic.Menu.openAt(pt(0,0), 'test', [['foo', ['bar']], ['foo2', ['bar2']]]),\n item = menu.submorphs[1]; // 0 is title, 1 is first item\n this.doMouseEvent({type: 'mouseover', pos: pt(5,5), target: item.renderContext().getMorphNode()});\n this.assertEquals('bar', menu.subMenu.items[0].string, 'sub menu is wrong')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ExternalShapesTests',\n'testing', {\n test01AddADivShape: function() {\n var div = stringToXML('
a test
'),\n morph = new Morph(new lively.morphic.Shapes.External(div));\n this.world.addMorph(morph);\n this.assert(morph.getExtent().x > 0, 'width of morph not bigger than 0');\n this.assert(morph.getExtent().y > 0, 'height of morph not bigger than 0');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LayoutTests',\n'testing', {\n test01DropJournalLayoutOnMorph: function() {\n var container = new Morph();\n container.setExtent(new Point(200,200));\n container.setFill(Color.red);\n container.setLayouter(new lively.morphic.layout.JournalLayout());\n this.world.addMorph(container);\n\n var text = new TextMorph();\n text.setExtent(new Point(300, a.getExtent().y));\n text.setTextString('hello world');\n text.openInWorld();\n text.growOrShrinkToFit();\n\n container.addMorph(text);\n\n this.assertEquals(container.getExtent().y, 2*container.getLayouter().borderSize() + text.getExtent(), \"expected morph's extent to be 200\");\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.SelectionTest',\n'testing', {\n testGrabByHand: function() {\n LastWorld = this.world;\n\n var hand = this.world.hands.first();\n hand.setPosition(pt(10,10))\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(100,20))\n this.world.addMorph(morph2);\n\n var oldPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.world.selectionMorph.selectMorphs([morph1, morph2]);\n this.world.selectionMorph.grabByHand(hand);\n\n var newPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.assertEquals(oldPos, newPos, 'selection pos changed')\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n testDropOn: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(40,40))\n this.world.addMorph(morph2)\n\n this.world.selectionMorph.addMorph(morph1);\n this.world.selectionMorph.dropOn(morph2);\n\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n\n testAddMorph: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n testAddMorphWithSelectionInHand: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.hands.first().addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LineTest',\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(20,100), pt(100,100)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,100\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 100), m.bounds());\n },\n test02SecondPointWithNegativeY: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,-20)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {\n tagName: 'svg',\n childNodes: [{tagName: 'path', attributes: {d: /M0,0\\s*L100,-20\\s*/}}],\n attributes: {height: '20', width: '100', viewBox: '0 -20 100 20'},\n style: {top: '-20px', left: '0px'}\n }\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.bounds());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.shape.getBounds());\n },\n test03aMoveControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(10,10));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L110,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 110, 110), m.bounds());\n },\n\n test03bMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(0,-150));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,-50\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-50, 100, 50), m.bounds());\n },\n test03cMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)])\n this.world.addMorph(m);\n\n // m.getControlPoint(1).moveControlPointBy(pt(0,-150));\n m.getControlPoint(1).moveBy(pt(0,-5));\n m.getControlPoint(1).moveBy(pt(0,10));\n m.getControlPoint(1).moveBy(pt(0,-5));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,0\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 0), m.bounds());\n },\n test04InsertPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.insertControlPointBetween(0, 1, pt(20, 50));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,50\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test05MergeControlPoints: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100), pt(100,120)]);\n ctrlPoint = m.getControlPoint(1);\n\n ctrlPoint.remove();\n\n this.assertEquals(pt(0,0), m.getControlPoint(0).getPos());\n this.assertEquals(pt(100,120), m.getControlPoint(0).next().getPos());\n\n this.assertEqual(2, m.controlPoints.length, 'ctrl point not removed');\n },\n\n\n xtest05aSetOrigin: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(0,100)])\n this.world.addMorph(m);\n\n m.setOrigin(pt(-10, -10))\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg',\n // attributes: {viewBox: \"0 0 110 10\"},\n childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M10,10\\s*L10,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(pt(-10,-10), m.getPosition(), 'morph pos');\n this.assertEquals(pt(10,10), m.getPosition(), 'shape pos');\n },\n test07ControlPointsAreStable: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n ctrlPts1 = m.getControlPoints();\n m.setVertices([pt(0,0), pt(100,110), pt(100,120)]);\n var ctrlPts2 = m.getControlPoints();\n\n this.assertEquals(2, ctrlPts1.length, 'length 1')\n this.assertEquals(3, ctrlPts2.length, 'length 2')\n this.assertIdentity(ctrlPts1[0], ctrlPts2[0], 'ctronolpoints not identical 0');\n this.assertIdentity(ctrlPts1[1], ctrlPts2[1], 'ctronolpoints not identical 1');\n\n this.assertEquals(pt(0,0), ctrlPts2[0].getPos());\n this.assertEquals(pt(100,120), ctrlPts2[2].getPos());\n },\n test08GetNextAndPrevControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,110), pt(100,120)]);\n ctrlPoint = m.getControlPoint(0);\n\n this.assertEquals(pt(0,0), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,120), ctrlPoint.getPos());\n\n ctrlPoint = ctrlPoint.prev();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n },\n test09aSetArrowHead: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n test09bArrowHeadMoves: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n this.assertEquals(0, arrowHead.getRotation().toDegrees());\n\n m.getControlPoint(1).moveBy(pt(0,100));\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n});\n\n\n\n}) // end of moduledule","sourceString":"module('lively.morphic.Tests').requires('lively.TestFramework', 'lively.morphic.Complete').toRun(function() {\n\nTestCase.subclass('lively.morphic.Tests.TestCase',\n'running', {\n tearDown: function($super) {\n $super();\n this.removeTestWorld();\n },\n},\n'helper', {\n removeTestWorld: function() {\n if (this.world) {\n this.world.remove();\n this.world = null;\n }\n if (this.oldAlert)\n Global.alert = this.oldAlert;\n if (this.existingWorld) {\n this.existingWorld.displayOnCanvas(document.getElementsByTagName('body')[0]);\n lively.morphic.World.currentWorld = this.existingWorld;\n this.existingWorld = null;\n }\n },\n openMorphsInRealWorld: function() {\n this.removeTestWorld();\n },\n createWorld: function() {\n if (this.world) return; // already created\n this.existingWorld = lively.morphic.World.current();\n this.world = lively.morphic.World.createOn(document.body, new Rectangle(0,0,300,300));\n this.oldAlert = Global.alert;\n Global.alert = function (msg) { this.existingWorld.alert(String(msg)) }.bind(this)\n },\n serializeAndDeserializeWorld: function() {\n if (!this.world) {\n alert('No test world created');\n return\n }\n var json = this.world.serializeToJSON();\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n },\n\n},\n'assertion', {\n assertNodeMatches: function(expected, node) {\n var self = this,\n fail = function fail(msg) { self.assert(false, msg) };\n if (!expected) fail('expected is null');\n if (!node) fail('node is null but should be ' + expected.tagName);\n if (expected.tagName != node.tagName) fail(expected.tagName + '!=' + node.tagName);\n if (expected.parentNode && (expected.parentNode !== node.parentNode))\n fail('parent is ' + node.parentNode + ' but should be ' + expected.parentNode);\n\n if (expected.textContent) {\n if (expected.textContent != node.textContent)\n fail('textContent ' + expected.textContent + ' != ' + node.textContent);\n }\n\n if (expected.attributes)\n Properties.forEachOwn(expected.attributes, function(key, expectedValue) {\n var actualValue = node.getAttribute(key);\n if (expectedValue instanceof RegExp) {\n if (!expectedValue.test(actualValue))\n fail('attribute ' + key + ' was ' + actualValue + ' and didn\\'t match ' + expectedValue);\n return\n }\n if (expectedValue != actualValue) {\n fail('attribute ' + key + ' not ' + expectedValue + ' but ' + actualValue);\n }\n });\n if (expected.style)\n Properties.forEachOwn(expected.style, function(key, expected) {\n var actualValue = node.style[key].replace(/ /g, '');\n if (Object.isFunction(expected)) {\n self.assert(expected.call(self, actualValue), 'value ' + actualValue + ' did no match')\n return\n }\n if (expected != actualValue)\n fail('style ' + key + ' not ' + expected + ' but ' + actualValue);\n });\n if (expected.childNodeLength)\n this.assertEquals(expected.childNodeLength, node.childNodes.length, 'childNode.length of ' + node)\n if (expected.childNodes)\n for (var i = 0; i < expected.childNodes.length; i++)\n this.assertNodeMatches(expected.childNodes[i], node.childNodes[i]);\n },\n});\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.WorldTests',\n'testing', {\n testAddWorldToDoc: function() {\n var canvasNode = document.body, bounds = new Rectangle(0, 0, 100, 100),\n world = new lively.morphic.World();\n try {\n world.setBounds(bounds);\n world.displayOnCanvas(canvasNode);\n\n var expected = {tagName: 'div', parentNode: canvasNode, childNodes: [{tagName: 'div'}]};\n this.assertNodeMatches(expected, world.renderContext().getMorphNode());\n } finally {\n world.remove();\n }\n },\n});\n\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.MorphTests',\n'running', {\n setUp: function($super) {\n $super();\n this.createWorld();\n },\n},\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n this.assert(this.world.submorphs.include(m), 'not in submorphs');\n this.assertIdentity(this.world, m.owner, 'owner');\n\n var expected = {\n tagName: 'div', // world morph\n childNodes: [\n {tagName: 'div'}, // world shape\n {tagName: 'div', childNodes: [{tagName: 'div'}]} // m and its shape\n ]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02aUseSVGRenderer: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext());\n\n var expected = {\n tagName: 'div', // world\n childNodes: [\n {tagName: 'div'}, // world's shape\n {tagName: 'div'}, // hand\n {tagName: 'svg', // submorph\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'rect'}]}]}]};\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n test03MorphWithSVGEllipse: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setShape(new lively.morphic.Shapes.Ellipse(new Rectangle(0,0, 30, 30)));\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'svg',\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'ellipse'}]}]}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test04MorphLocalize: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph2.setPosition(pt(10,10));\n this.assertEquals(pt(0,0), morph2.localize(pt(10,10)));\n },\n test04AddMorphBefore: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph(),\n morph3 = new lively.morphic.Morph();\n // Colors to identify the morphs are in correct order\n morph1.setFill(Color.green);\n morph2.setFill(Color.blue);\n morph3.setFill(Color.yellow);\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n this.world.addMorph(morph3, morph2);\n\n morph1.setExtent(pt(200, 200))\n morph2.setExtent(pt(100, 150))\n morph3.setExtent(pt(150, 100))\n\n // order back to front: morph1, morph3, morph2 \n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph1.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph3.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph2.getFill().toString()}}]},\n {tagName: 'div'}, // hand\n ]}\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n\n testMorphBounds: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph1.setBounds(new Rectangle(100, 100, 40, 40));\n morph2.setBounds(new Rectangle(20, 10, 40, 40));\n this.assertEquals(new Rectangle(100, 100, 60, 50), morph1.getBounds());\n },\n test07MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n shape = new lively.morphic.Shapes.Rectangle(bounds);\n this.assertEquals(bounds, shape.getBounds(), 'shape bounds');\n var morph = new lively.morphic.Morph(shape);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n test08aCreateMorphWithLinearGradient: function() {\n var morph = new lively.morphic.Morph();\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.LinearGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], \"northSouth\"));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(linear,0%0%,0%100%,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test08bCreateMorphWithradialGradient: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.RadialGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], pt(0.5,0.3)));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(radial,50%30%,0,50%50%,25,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test09BorderColorAndWidth: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderColor(Color.green);\n morph.setBorderWidth(2.5);\n morph.setStrokeOpacity(0.5);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {\n // FIXME float conversion in style makes it hard to test directly\n 'border': function(result) { // \"2.5px solid rgba(0,204,0,0.5)\"\n return result.include('2.5px') && result.include('solid') && result.include('rgba(0,204')\n }\n }\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test10BorderRadiusHTML: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderRadius(3);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: { 'border-top-left-radius': '3px3px'}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test12ModifyOrigin: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setOrigin(pt(50, 10));\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test13ModifyOriginWithTransformation: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setRotation((90).toRadians()); // apply some transformation\n morph.setOrigin(pt(50, 10)); // coordinates local to morph\n this.assertMatches(rect(pt(-20, 0), pt(0, 100)).toString(), morph.bounds().toString(), 'setOrigin wrong')\n \n morph.setRotation(0);\n\n this.assertEquals(pt(-60, 40).extent(pt(100,20)), morph.bounds());\n },\n test14ModifyOriginWithScale: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 50, 10);\n this.world.addMorph(morph);\n\n morph.setScale(2)\n morph.setOrigin(pt(25, 5)); // set origin is in local shape coordinates\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test15ModifyOriginWithSubmorphs: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n var submorph = lively.morphic.Morph.makeRectangle(0, 0, 10, 10); \n morph.addMorph(submorph)\n submorph.setPosition(pt(30,30))\n\n\n morph.setOrigin(pt(20, 20));\n\n this.assertEquals(pt(10,10), submorph.getPosition(), \"submorph pos did not adjust\");\n },\n\n test16MorphsContainingPoint: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(20, 20, 30, 30), \n subsubmorph = lively.morphic.Morph.makeRectangle(25, 25, 5, 5),\n morph2 = lively.morphic.Morph.makeRectangle(48, 48, 100, 100);\n this.world.addMorph(morph)\n morph.addMorph(submorph)\n submorph.addMorph(subsubmorph)\n this.world.addMorph(morph2)\n\n var result, expected;\n\n result = morph.morphsContainingPoint(pt(-1,-1));\n this.assertEquals(0, result.length, 'for ' + pt(-1,-1));\n\n result = morph.morphsContainingPoint(pt(1,1));\n this.assertEquals(1, result.length, 'for ' + pt(1,1));\n this.assertEquals(morph, result[0], 'for ' + pt(1,1));\n\n result = morph.morphsContainingPoint(pt(40,40));\n this.assertEquals(2, result.length, 'for ' + pt(40,40));\n this.assertEquals(submorph, result[0]);\n this.assertEquals(morph, result[1]);\n\n result = morph.morphsContainingPoint(pt(45,45));\n this.assertEquals(3, result.length, 'for ' + pt(45,45));\n this.assertEquals(subsubmorph, result[0]);\n this.assertEquals(submorph, result[1]);\n this.assertEquals(morph, result[2]);\n\n result = this.world.morphsContainingPoint(pt(48,48));\n this.assertEquals(5, result.length, 'for ' + pt(48,48));\n this.assertEquals(morph2, result[0]);\n this.assertEquals(subsubmorph, result[1]);\n this.assertEquals(submorph, result[2]);\n this.assertEquals(morph, result[3]);\n this.assertEquals(this.world, result[4]);\n },\n test17MorphsContainingPointWithAddMorphFront: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n var result = this.world.morphsContainingPoint(pt(1,1));\nthis. openMorphsInRealWorld()\n// inspect(result)\n this.assertEquals(3, result.length);\n // this.assertEquals(this.world.firstHand(), result[0], 'for ' + pt(1,1));\n\n this.assertEquals(morph1, result[0], 'for ' + pt(1,1));\n this.assertEquals(morph2, result[1], 'for ' + pt(1,1));\n },\n test18OrderOfMorphsOnScrennAndInSubmorphArrayMatches: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n this.assertIdentity(this.world.submorphs[0], morph2, 'morph2 not @0')\n this.assertIdentity(this.world.submorphs[1], morph1, 'morph1 not @1')\n },\n test19MorphsContainingPointDosNotIncludeOffsetedOwner: function() {\n var owner = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(110, 10, 90, 90), \n other = lively.morphic.Morph.makeRectangle(100, 0, 100, 100);\n\n owner.name = 'owner'; submorph.name = 'submorph'; other.name = 'other';\n this.world.addMorph(owner)\n owner.addMorph(submorph)\n this.world.addMorphBack(other)\n\n var result = this.world.morphsContainingPoint(pt(150,50));\n this.assertEquals(3, result.length, 'for ' + pt(150,50));\n this.assertEquals(this.world, result[2], 'for 2');\n this.assertEquals(other, result[1], 'for 1');\n this.assertEquals(submorph, result[0], 'for 0');\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.EventTests',\n'testing', {\n xtest05DropMorph: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n // this.world.addHandMorph();\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n morph1.setBounds(new Rectangle(0,0, 100, 100));\n morph2.setBounds(new Rectangle(0,0, 80, 80));\n morph1.applyStyle({fill: Color.red});\n morph2.applyStyle({fill: Color.green});\n\n // is already done by style settings\n // this.world.enableDropping();\n // morph1.enableDropping();\n // morph1.enableGrabbing();\n // morph2.enableDropping();\n // morph2.enableGrabbing();\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morph2.renderContext().getMorphNode(), button: 0});\n\n this.assert(this.world.firstHand().submorphs.include(morph2), 'morph not grabbed');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(20,20), target: this.world.renderContext().getMorphNode()});\n\n this.assert(morph1.submorphs.include(morph2), 'morph not dropped on morph2'); \n },\n test01DragMorph: function() {\n var dragStarted = false,\n dragMoved = false,\n dragEnded = false,\n morph = new lively.morphic.Morph(),\n morphNode = morph.renderContext().getMorphNode();\n this.world.addMorph(morph);\n morph.setBounds(new Rectangle(0,0, 100, 100));\n morph.applyStyle({fill: Color.red, enableDragging: true});\n\n morph.onDragStart = function() { dragStarted = true }\n morph.onDrag = function() { dragMoved = true }\n morph.onDragEnd = function() { dragEnded = true }\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morphNode, button: 0});\n this.assert(!dragStarted, 'drag already started after mousedown');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(25,25), target: morphNode, button: 0});\n this.assert(dragStarted, 'drag not started after mousedown and mousemove');\n this.assert(!dragMoved, 'drag already moved at dragStart');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragMoved, 'drag not moved after mousemove');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragEnded, 'dragEnd not called');\n },\n test02RelayMouseEventsToMorphBeneath: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,100,100),\n morph2 = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n\n morph2.relayMouseEventsToMorphBeneath();\n\n lively.morphic.EventSimulator.doMouseEvent(\n {type: 'mousedown', pos: pt(20,20), target: morph2, button: 0});\n this.assertIdentity(morph1, this.world.clickedOnMorph);\n },\n\n});\n \nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CopyMorphTests',\n'testing', {\n test01CopySimpleMorph: function() {\n var m = new lively.morphic.Morph()\n m.setBounds(new Rectangle(100, 100, 40, 40));\n var m2 = m.copy();\n this.assert(m !== m2, 'copied morph is identical to original morph')\n this.assertEquals(new Rectangle(100, 100, 40, 40), m2.getBounds());\n },\n test02ReferencedMorphThatIsNotASubmorphIsNotCopied: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.addMorph(m2)\n m1.other = m3;\n var copy = m1.copy();\n this.assert(copy !== m1, 'copied morph is identical to original morph');\n this.assert(copy.submorphs[0] instanceof lively.morphic.Morph, 'submorph not copied');\n this.assert(copy.submorphs[0] !== m2, 'copied submorph is identical to original submorph');\n this.assert(copy.other === m3, 'referenced morph that is not a submorph is not identical')\n },\n test03OwnerIsNotCopied: function() {\n var m = new lively.morphic.Morph();\n this.world.addMorph(m);\n var copy = m.copy();\n this.assert(!copy.owner, 'owner was copied');\n },\n test04CopyMorphTreeWithEventHandlers: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.enableGrabbing();\n m2.enableGrabbing();\n m3.enableGrabbing();\n m1.addMorph(m2)\n m2.addMorph(m3)\n this.world.addMorph(m1);\n var copy = m1.copy();\n this.world.addMorph(copy);\n this.assertEquals(2+1, this.world.submorphs.length); // +1 for hand\n this.assertEquals(1, copy.submorphs.length);\n this.assertEquals(1, copy.submorphs[0].submorphs.length);\n },\n test05CopySetsNewTargetForScripts: function() {\n var m1 = new lively.morphic.Morph();\n m1.startStepping(20, 'rotateBy', 0.1);\n var copy = m1.copy();\n\n this.assertIdentity(m1, m1.scripts[0].target, 'original target changed');\n this.assertIdentity(copy, copy.scripts[0].target, 'copy target changed');\n },\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphTests',\n'testing', {\n test01TextMorphHTML: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.setTextString('Foo');\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div', childNodes: [ // shape\n {tagName: 'div', textContent: 'Foo'}] // text node\n }, \n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test02TextMorphSVG: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setTextString('Foo');\n var expected = {\n tagName: 'g',\n childNodes: [\n {tagName: 'rect'}, // shape\n {tagName: 'text', textContent: 'Foo'} // text node\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test03TextStringIsConnectable: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n var resultObj = {result: null};\n connect(m, 'textString', resultObj, 'result');\n m.setTextString('Foo');\n this.assertEquals('Foo', resultObj.result);\n },\n test04GrowToFit: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 10, 20));\n this.world.addMorph(m);\n m.setTextString('a really long string longer than 10px')\n m.applyStyle({fixedWidth: false});\n this.assert(m.getExtent().x > 10, 'did not grow to fit text ' + m.bounds().width);\n },\n\n test05SetSelectionRange: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(0,1);\n this.assertEquals('1', m.selectionString());\n m.setSelectionRange(0,3);\n this.assertEquals('123', m.selectionString());\n m.setSelectionRange(-99,m.textString.length+10);\n this.assertEquals('123\\t567\\n9', m.selectionString());\n },\n test05bSetSelectionRangeRightToLeft: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(3, 0);\n this.assertEquals('123', m.selectionString());\n this.assertEqualState([3,0], m.getSelectionRange());\n },\n\n test06ModifySelectedLinesInsertsAtCorrectPosition: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('This\\nis\\na\\ntest');\n m.setSelectionRange(0,9);\n this.assertEquals('This\\nis\\na', m.selectionString())\n m.modifySelectedLines(function(ea) { return '+' + ea });\n this.assertEquals('+This\\n+is\\n+a\\ntest', m.textString);\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ScrollTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 60, 200));\n this.world.addMorph(this.text);\n this.text.applyStyle({clipMode: 'scroll', fixedHeight: true})\n\n // 10x test, 9x \\n\\n\\n\n var str = Array.range(1,10).collect(function(i) { return 'test'+i }).join('\\n\\n\\n')\n this.text.setTextString(str);\n },\n},\n'testing', {\n\n test01ScrollSelectionAtBottomIntoView: function() {\n var m = this.text;\n\n // scroll down to be in scroll bounds\n m.setScroll(0, 0) // scroll to top\n m.setSelectionRange(m.textString.length-6,m.textString.length) // select\"test10\"\n m.scrollSelectionIntoView()\n this.assertMatches([0, 321], m.getScroll(), 'does not scroll down');\n\n // scroll up to be in scroll bounds\n m.setSelectionRange(0,5) // select \"test1\"\n\n m.scrollSelectionIntoView()\n this.assertMatches([0,2], m.getScroll(), 'does not scroll up');\n },\n test02ScrollWorld: function() {\n this.world.setExtent(pt(10000, 10000));\n this.world.setScroll(0, 0);\n this.world.setScroll(0, 10);\n this.world.setScroll(0, 10)\n\n this.assertMatches([0,10], this.world.getScroll())\n },\n\n\n});\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphRichTextTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // cop.withLayers([TextDevLayer], function() {\n // return new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // })\n // this.text.setWithLayers([TextDevLayer]);\n this.world.addMorph(this.text);\n },\n checkRunArray: function(expectedRunArray) {\n this.assertMatches(expectedRunArray.asArray(), this.text.textStyle.asArray());\n },\n checkChunks: function(expectedChunks) {\n this.assertMatches(expectedChunks, this.text.getTextChunks());\n },\n\n checkDOM: function(expectedTextNodes) {\n // check what was actually rendered\n var expected = {\n tagName: 'div',\n childNodeLength: expectedTextNodes.length,\n childNodes: expectedTextNodes\n };\n this.assertNodeMatches(expected, this.text.renderContext().textNode);\n },\n\n\n},\n'testing', {\n test01MorphHasTextChunk: function() {\n// this. openMorphsInRealWorld()\n// inspect(this.text)\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('', chunks[0].textString);\n chunks[0].textString = 'foo';\n this.assertEquals('foo', this.text.textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test02MorphHasTextChunkWhenTextStringIsSet: function() {\n this.text.textString = 'foo'\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('foo', chunks[0].textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test03SplitAndJoinTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n var after = chunk.splitAfter(3);\n this.assertEquals('test', after.textString, 'after string');\n this.assertEquals('ein', chunk.textString, 'chunk string');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n\n chunk.joinWithNext();\n this.assertEquals('eintest', chunk.textString);\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}]);\n\n var before = chunk.splitBefore(3);\n this.assertEquals('ein', before.textString, 'before string');\n this.assertEquals(2, this.text.getTextChunks().length);\n },\n test03bCoalesceChunks: function() {\n this.text.setTextString('test');\n this.text.firstTextChunk().splitAfter(2);\n this.text.coalesceChunks()\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test03cSplitAtFrontAndBack: function() {\n this.text.setTextString('a');\n var after = this.text.firstTextChunk().splitAfter(1);\n this.assertEquals('', after.textString, 'splitAfter');\n var before = this.text.firstTextChunk().splitBefore(0);\n this.assertEquals('', before.textString, 'splitBefore');\n this.assertEquals(3, this.text.getTextChunks().length);\n },\n test03cSplittedChunkGetsStyle: function() {\n this.text.setTextString('abcdef');\n var chunk = this.text.firstTextChunk();\n chunk.style.setFontWeight('bold');\n var after = this.text.firstTextChunk().splitAfter(3);\n this.assertEquals('bold', after.style.getFontWeight());\n },\n\n\n\n test04SliceTextChunksSimple: function() {\n this.text.setTextString('eintest');\n var sliced = this.text.sliceTextChunks(0,3);\n this.assertEquals(1, sliced.length, 'sliced not oke');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n },\n\n test04SliceTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n chunk.splitAfter(3);\n var sliced = this.text.sliceTextChunks(2,6);\n this.assertEquals(4, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ei'},\n {tagName: 'span', textContent: 'n'},\n {tagName: 'span', textContent: 'tes'},\n {tagName: 'span', textContent: 't'}])\n },\n test04SliceTextChunksAgain: function() {\n this.text.setTextString('abc');\ndebugger\n var sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'first');\n sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'second');\n },\n\n test05StyleChunk: function() {\n this.text.setTextString('test');\n var chunk = this.text.firstTextChunk();\n chunk.styleText({fontWeight: 'bold'});\n this.checkDOM([{tagName: 'span', style: {fontWeight: 'bold'}}]);\n },\n test06MakeTextBold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n test07MakeTextBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 2);\n this.text.emphasize({fontWeight: 'normal'}, 0, 2);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test08ToggleBoldnessComplete: function() {\n this.text.setTextString('eintest');\n this.text.toggleBoldness(1, 6);\n this.checkDOM([\n {tagName: 'span', textContent: 'e'},\n {tagName: 'span', textContent: 'intes'},\n {tagName: 'span', textContent: 't'}])\n this.text.toggleBoldness(1, 6);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test09ChunksAreSerializable: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.text.name = 'testText';\n this.serializeAndDeserializeWorld();\n this.text = this.world.get('testText');\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n\n },\n test10ConvertSelectionRangeForEmphasis: function() {\n // the indexes used by text selection are currently different\n // to those used for emphasizing the text\n var testValues = [\n {sel: [0,0], emph: [0,0]},\n {sel: [0,7], emph: [0,7]},\n {sel: [1,1], emph: [1,1]},\n {sel: [2,0], emph: [0,2]},\n {sel: [8,0], emph: [0, 8]},\n {sel: [4,7], emph: [4,7]}];\n testValues.forEach(function(selAndEmph) {\n this.assertEqualState(\n selAndEmph.emph,\n this.text.convertSelectionRangeForEmphasis(selAndEmph.sel),\n 'sel conversion of ' + selAndEmph.sel);\n }, this)\n },\n test11ToggleBoldnessWithChunkWithMultipleTextNodes: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n this.text.insertAtCursor('foo');\n this.assertEqual('einfootest', this.text.textString, 'insert')\n this.checkDOM([\n {tagName: 'span', textContent: 'einfootest', childNodes: [\n {tagName: undefined, textContent: 'ein'},\n {tagName: undefined, textContent: 'foo'},\n {tagName: undefined, textContent: 'test'}\n ]},\n ])\n\n this.text.toggleBoldness(1, 9);\n this.checkDOM([\n {tagName: 'span', textContent: 'e', childNodes: [{textContent: 'e'}]},\n {tagName: 'span', textContent: 'infootes', childNodes: [{textContent: 'infootes'}]},\n {tagName: 'span', textContent: 't', childNodes: [{textContent: 't'}]},\n ])\n },\n test11FixChunksShouldKeepSlection: function() {\n this.text.setTextString('eintest');\n // add a text outside of chunks manually\n this.text.renderContext().textNode.appendChild(document.createTextNode('test'))\n this.text.setSelectionRange(2,5)\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest', childNodes: [\n {tagName: undefined, textContent: 'eintesttest'},\n ]},\n ])\n var range = this.text.getSelectionRange()\n this.assert(range, 'no selection range after fixChunks!')\n this.assertMatches([2, 5], range) // Inconsistency with selection ranges?\n },\n test12GetAndSetSelectionRangeHaveEqualValues: function() {\n this.text.setTextString('eintest');\n this.text.setSelectionRange(1, 6)\n this.assertEquals('intes', this.text.selectionString());\n this.assertMatches([1,6], this.text.getSelectionRange());\n },\n test13InsertedTextBetweenChunksIsAssimilated: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n\n var chunks = this.text.getTextChunks();\n this.assertEqual(2, chunks.length, 'test preparation: chunks not OK')\n\n var newNode = XHTMLNS.create('b')\n newNode.textContent = 'foo';\n\n this.text.renderContext().textNode.insertBefore(newNode, chunks[1].getChunkNode());\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abcfoo'},\n {tagName: 'span', textContent: 'def'},\n ])\n },\n test14GetEmphasisAt: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 1, 3);\n\n var emph, expected = ['normal', 'bold', 'bold', 'normal']\n expected.forEach(function(expectedFontWeight, i) {\n var emph = this.text.getEmphasisAt(i)\n this.assertEquals(expectedFontWeight, emph.getFontWeight(), i);\n },this)\n },\n\n test15GetChunkAndLocalIndex: function() {\n this.text.setTextString('abcdef');\n this.text.sliceTextChunks(1,3);\n this.checkDOM([\n {tagName: 'span', textContent: 'a'},\n {tagName: 'span', textContent: 'bc'},\n {tagName: 'span', textContent: 'def'},\n ]);\n\n var chunks = this.text.getTextChunks(), result;\n \n result = this.text.getChunkAndLocalIndex(0);\n this.assertEquals(chunks[0], result[0]); // test for chunk\n this.assertEquals(0, result[1]); // test for local index\n\n result = this.text.getChunkAndLocalIndex(1); // if chunks ends at idx we extend it\n this.assertEquals(chunks[0], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(2);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(1, true);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(0, result[1])\n },\n test16AddLink: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({uri: 'http://foo.com'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein', style: {uri: 'http://foo.com'}}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {textDecoration: 'underline'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test17AddLinkMakeBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n\n this.text.emphasize({uri: 'test'}, 3, 7)\n this.text.emphasize({fontWeight: 'bold'}, 0, 4)\n this.text.emphasize({fontWeight: 'normal'}, 0, 4)\n\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test', style: {textDecoration: 'underline'}}])\n },\n test18LinkifiedChunkShouldKeepLinkWhenTextStringChanges: function() {\n this.text.setTextString('foo');\n this.text.emphasize({uri: 'test'}, 0, 3);\n\n this.text.firstTextChunk().textString = 'bar'\n\n this.checkChunks([{textString: 'bar', style: {uri: 'test'}}])\n\n this.checkDOM([{\n tagName: 'span',\n textContent: 'bar',\n style: {textDecoration: 'underline'}\n }])\n },\n test19FixChunksShouldRemoveElements: function() {\n this.text.setTextString('eintest');\n\n // this happens when pasting rich text on windows, for now remove RT attributes\n var elem = XHTMLNS.create('a');\n elem.href = 'http://foo.com';\n elem.textContent = 'test';\n\n this.text.firstTextChunk().getChunkNode().appendChild(elem);\n\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest',\n // childNodes: [{tagName: undefined, textContent: 'eintesttest'}]\n },\n ])\n },\n test20HandleSplittedSpanNodes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('ac');\n\n var span = XHTMLNS.create('span');\n span.textContent = 'a';\n textNode.insertBefore(span, this.text.firstTextChunk().getChunkNode());\n\n var text = NodeFactory.createText('b');\n textNode.insertBefore(text, this.text.firstTextChunk().getChunkNode());\n\n this.text.firstTextChunk().textString = 'c';\n\n this.text.fixChunks();\n\n this.checkDOM([{tagName: 'span', textContent: 'abc'}]);\n },\n test21HandleSplittedSpanNodesAndTextAttributes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('abc');\n\n this.text.emphasize({fontWeight: 'bold'}, 1,3);\n var chunks = this.text.getTextChunks();\n\n var span = XHTMLNS.create('span');\n span.textContent = 'b';\n textNode.insertBefore(span, chunks.last().getChunkNode());\n // abbc\n\n var text = NodeFactory.createText('x');\n textNode.insertBefore(text, chunks.last().getChunkNode());\n // abxbc\n\n chunks.last().textString = 'c';\n // abxc\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abx'},\n {tagName: 'span', textContent: 'c', style: {fontWeight: 'bold'}}]);\n },\n test22ReclaimRemovedSpanNodesOnPaste: function() {\n // this happens when pasting normal text on Mac OS after a chunk\n // the span node of the chunk that is pasted into is removed and the chunkNode\n // has no parent anymore. The abandoned chunkNode should reclaim its old text + the isnerted\n\n // add new content\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\n\\nbar\\n\\nbaz');\n\n this.text.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.emphasize({fontWeight: 'bold'}, 10,13);\n var chunks = this.text.getTextChunks();\n\n // remove middle chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var text = NodeFactory.createText('\\n\\nbar zurp\\n\\n');\n textNode.insertBefore(text, chunks[2].getChunkNode());\n\n this.assertEquals('foo\\n\\nbar zurp\\n\\nbaz',textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: '\\n\\nbar zurp\\n\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'baz', style: {fontWeight: 'bold'}}]);\n\n },\n test23ReclaimRemovedChunkNodeAndReapplyTextAttributes: function() {\n // this happens when pasting normal text on Mac OS in attributed text (e.g. bold)\n // Chrome tries to complete render the span itself, e.g. using \n // the chunkNode is removed but the chunk still exists\n // this tests if the chunk can reclaim the text and set it's attributes again\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\nbar');\n\n this.text.emphasize({fontWeight: 'bold'}, 4,7);\n var chunks = this.text.getTextChunks();\n\n // remove last chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var b = XHTMLNS.create('b');\n b.textContent = 'morebar'\n textNode.appendChild(b);\n\n this.assertEquals('foo\\nmorebar', textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'morebar', style: {fontWeight: 'bold'}}]);\n }, \n\n test22EmphasizeRegex: function() {\n this.text.setTextString(\"a1b2c\");\n this.text.emphasizeRegex(/[0-9]/g, {color: Color.red});\n this.checkChunks([\n {textString: 'a', style: {color: null}},\n {textString: '1', style: {color: Color.red}},\n {textString: 'b', style: {color: null}},\n {textString: '2', style: {color: Color.red}},\n {textString: 'c', style: {color: null}},\n ])\n },\n richTextPasteData: 'ein test',\n\n test23aRichTextPaste: function() {\n var pastedText = this.richTextPasteData,\n rt = lively.morphic.HTMLParser.pastedHTMLToRichText(pastedText);\n this.assertEquals(2, rt.textChunks.length);\n this.assertEquals('ein ', rt.textChunks[0].textString);\n this.assertEquals('test', rt.textChunks[1].textString);\n this.assertEquals('normal', rt.textChunks[0].style.getFontWeight());\n this.assertEquals('bold', rt.textChunks[1].style.getFontWeight());\n \n },\n test24aInsertTextChunks: function() {\n this.text.setTextString('ein');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('test')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n test24bInsertTextChunks: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('foo')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'foo'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n\n test25SlicingTextChunksWithRangeWithLengthZero: function() {\n this.text.setTextString('ein');\n var newChunk = this.text.sliceTextChunks(3,3);\n this.assertEquals(2, this.text.textChunks.length)\n this.assertIdentity(newChunk[0], this.text.textChunks.last())\n },\n\n\n\n});\nlively.morphic.Tests.TextMorphRichTextTests.subclass('lively.morphic.Tests.RichTextTests',\n'testing', {\n test01CreateRichText: function() {\n var rt = new lively.morphic.RichText('test');\n this.text.setRichText(rt);\n this.assertEqual('test', this.text.textString)\n },\n test02GetRichText: function() {\n this.text.textString = 'test';\n var rt = this.text.getRichText();\n this.assertEqual('test', rt.textString)\n },\n test03EmphasizeRichText: function() {\n var rt = new lively.morphic.RichText('eintest');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.assertEquals(2, rt.textChunks.length, 'chunks not created in rich text')\n this.text.setRichText(rt);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test04InsertInText: function() {\n var rt = new lively.morphic.RichText('foo');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.setTextString('einxtest');\n this.text.setSelectionRange(3,4);\n rt.replaceSelectionInMorph(this.text)\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'foo'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ButtonMorphTests',\n'testing', {\n test01MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n morph = new lively.morphic.Button(bounds);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ListMorphTests',\n'testing', {\n test01SetAndRetrieveStringItems: function() {\n var list = new lively.morphic.List(new Rectangle(0, 0, 100, 100), ['1', '2', '3']);\n this.assertEqualState(['1', '2', '3'], list.itemList);\n list.updateList(['foo']);\n this.assertEqualState(['foo'], list.itemList);\n },\n test02SelectAt: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['first']);\n this.world.addMorph(morph);\n morph.selectAt(0);\n\n this.assertEquals('first', morph.selection);\n // var morphNode = morph.renderContext().getMorphNode();\n // this.doMouseEvent({type: 'mousedown', pos: pt(10,8), target: morphNode, button: 0});\n },\n test03SelectListItem: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(morph);\n morph.updateList([\n {isListItem: true, string: 'foo', value: 23},\n {isListItem: true, string: 'bar', value: 24}])\n morph.selectAt(1);\n this.assertEquals(24, morph.selection);\n },\n\n test04ListMorphBoundsOnCreationInHTML: function() {\n var owner = lively.morphic.Morph.makeRectangle(0,0,10,10),\n list = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['1', '2', '3']);\n\n owner.addMorph(list)\n this.world.addMorph(owner);\n\n // FIXME depends on HTML\n this.assert(list.renderContext().listNode.clientHeight > 0, 'list node height is wrong')\n },\n test05ListMorphKeepsSelectionHighlightOnUpdateList: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(list);\n\n list.updateList([1,2,3]);\n list.setSelection(2);\n list.updateList([1,2,3]);\n\n var expected = {\n tagName: 'option',\n // attributes: {selected: true} // for some reason this does not work..\n };\n this.assertNodeMatches(expected, list.renderContext().subNodes[1]);\n this.assert(list.renderContext().subNodes[1].selected, 'not selected');\n },\n test06SetSelectionWithListItems: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [{isListItem: true, string: 'foo', value: 23}];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(23);\n\n this.assertEquals(0, list.selectedLineNo);\n },\n testAddMorphDuplicatesListsBug: function() {\n var list = new lively.morphic.List(new Rectangle(0,0,100,100), [1,2,3]),\n rect = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(list);\n this.world.addMorph(rect);\n rect.addMorph(list);\n\n this.assert(!this.world.submorphs.include(list), 'list in world submorphs')\n this.assert(rect.submorphs.include(list), 'list not in rect submorphs')\n },\n testUpdateListOnSelectionHighlightsSelectionCorrectly: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [1, 2, 3];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(2);\n this.assertEquals(1, list.selectedLineNo);\n\n connect(list, 'selection', list, 'onSelect')\n list.addScript(function onSelect(sel) { this.updateList(this.getList()) });\n\n list.setSelection(3);\n this.assertEquals(2, list.selectedLineNo);\n // FIXME implementation & HTML specific\n var isSelected = list.renderContext().subNodes[2].selected;\n this.assert(isSelected !== '', 'highlight wrong')\n },\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.AppTests',\n'testing', {\n test01ConfirmDialog: function() {\n var answer = false,\n dialog = this.world.confirm('Foo?', function(bool) { answer = bool });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'no button does not work')\n dialog.okButton.simulateButtonClick();\n this.assert(answer, 'yes button does not work')\n },\n test02PromptDialog: function() {\n var answer = 'nothing',\n dialog = this.world.prompt('Foo?', function(input) { answer = input });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'cancel button does not work')\n dialog.inputText.setTextString('test input')\n dialog.okButton.simulateButtonClick();\n this.assertEquals('test input', answer, 'ok button does not work')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CanvasRenderingTests',\n'testing', {\n test01UseCanvasRendererForSimpleMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.Canvas.RenderContext())\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02MorphAndSubmorphWithCanvas: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph()\n this.world.addMorph(m1);\n m1.renderUsing(new lively.morphic.Canvas.RenderContext())\n m1.addMorph(m2);\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}],\n };\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n});\nTestCase.subclass('lively.morphic.Tests.SimilitudeTests',\n'testing', {\n test01PointTransform: function() {\n var globalPoint = pt(20,10),\n globalTransform = new lively.morphic.Similitude(pt(0,0), 0, pt(1,1)),\n localTransform = new lively.morphic.Similitude(pt(5,10), 0, pt(1,1)),\n globalizedInvertedLocal = localTransform.preConcatenate(globalTransform).createInverse(),\n matrix = globalTransform.preConcatenate(globalizedInvertedLocal);\n this.assertEquals(pt(15, 0), globalPoint.matrixTransform(matrix))\n },\n});\nAsyncTestCase.subclass('lively.morphic.Tests.ScriptTests',\n'testing', {\n test01StartAndStopTicking: function() {\n var n = 0, script = new lively.morphic.FunctionScript(function() { script.stop(); n++; });\n script.startTicking(10);\n this.delay(function() {\n this.assertEquals(1, n, 'Script not run once');\n this.done();\n }, 40);\n },\n test02SuspendAndContinue: function() {\n var n = 0,\n script = lively.morphic.Script.forFunction(function() { n++; });\n script.startTicking(10);\n this.delay(function() { this.assertEquals(1, n, 'Script not run once'); script.suspend() }, 15);\n this.delay(function() { this.assertEquals(1, n, 'Script not suspended'); script.resume() }, 25);\n this.delay(function() {\n script.stop();\n this.assertEquals(2, n, 'Script not continued');\n this.done();\n }, 40);\n },\n test03MorphStartStepping: function() {\n var m = new lively.morphic.Morph(),\n arg = {callCount: 0};\n m.someFunction = function(arg) { arg.callCount++ };\n\n m.startStepping(10, 'someFunction', arg);\n this.delay(function() {\n m.remove();\n this.assertEquals(1, arg.callCount, 'someFunction not run once');\n }, 15);\n this.delay(function() {\n this.assertEquals(1, arg.callCount, 'arg call count changed although morph was removed');\n this.done();\n }, 30);\n },\n test04ScriptEquals: function() {\n var cb = function() { return 23 },\n script1 = new lively.morphic.FunctionScript(cb);\n script2 = new lively.morphic.FunctionScript(cb);\n this.assert(script1.equals(script1), 'identity not working');\n this.assert(script1.equals(script2), 'FunctionScript equals');\n\n script1 = new lively.morphic.TargetScript(this, 'foo', 33);\n script2 = new lively.morphic.TargetScript(this, 'foo', 44);\n this.assert(script1.equals(script1), 'identity not working Target');\n this.assert(script1.equals(script2), 'TargetScript equals');\n\n this.done()\n },\n test05StartSteppingChecksIfScriptIsThere: function() {\n var m = new lively.morphic.Morph();\n m.someFunction = function(arg) { return 33 };\n\n m.startStepping(10, 'someFunction');\n m.startStepping(20, 'someFunction');\n\n this.assertEquals(1, m.scripts.length, 'script added twice');\n this.assertEquals(20, m.scripts[0].tickTime, 'tickTime not OK');\n \n this.done();\n },\n\n\n\n\n\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.SerializationTests',\n'testing', {\n test01SerializeSimpleWorld: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n this.world.addMorph(m1);\n m1.setName('SomeMorph');\n var json = lively.persistence.Serializer.serialize(this.world)\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n this.assertEquals(2, this.world.submorphs.length) // m1 and hand;\n this.assert(this.world.get('SomeMorph'), 'does not find morph with name from m1');\n this.assert(m1 !== this.world.submorphs[1], 'morphs are identical!!!');\n },\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.HaloTests',\n'testing', {\n test01ShowHalosForMorph: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(50,50, 100, 100);\n this.world.addMorph(m1);\n m1.showHalos();\n this.assertIdentity(m1, this.world.currentHaloTarget, 'halo target');\n this.assert(m1.halos.length > 0, 'morph has no halos?');\n },\n test02HalosStayInVisibleBounds: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n m1.align(m1.bounds().topRight(), this.world.bounds().topRight());\n this.world.addMorph(m1);\n m1.showHalos(); \n m1.halos.forEach(function(ea) {\n if (ea.constructor == lively.morphic.OriginHalo) return;\n this.assert(this.world.visibleBounds().containsRect(ea.bounds()), 'halo ' + ea + ' not in visibleBounds')\n }, this)\n },\n testTransformRectSoThatItFitsInOuter: function() {\n var outer, r, result;\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(0,0, 10, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(20,30, 10, 20), result);\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(40,40, 10, 12);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(r, result);\n\n outer = new Rectangle(20,30, 80, 70);\n r = new Rectangle(90,90, 20, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(90,90, 10, 10), result);\n },\n\n\n});\n\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ImageTests',\n'testing', {\n testImageMorphHTML: function() {\n var url = 'http://lively-kernel.org/repository/webwerkstatt/media/hpi_logo.png',\n morph = new lively.morphic.Image(new Rectangle(0,0,100,100), url) \n this.world.addMorph(morph);\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'img', attributes: {src: url}}],\n };\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode()); \n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.MenuTests',\n'testing', {\n testWrongSubMenuItems: function() {\n var menu = lively.morphic.Menu.openAt(pt(0,0), 'test', [['foo', ['bar']], ['foo2', ['bar2']]]),\n item = menu.submorphs[1]; // 0 is title, 1 is first item\n this.doMouseEvent({type: 'mouseover', pos: pt(5,5), target: item.renderContext().getMorphNode()});\n this.assertEquals('bar', menu.subMenu.items[0].string, 'sub menu is wrong')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ExternalShapesTests',\n'testing', {\n test01AddADivShape: function() {\n var div = stringToXML('
a test
'),\n morph = new Morph(new lively.morphic.Shapes.External(div));\n this.world.addMorph(morph);\n this.assert(morph.getExtent().x > 0, 'width of morph not bigger than 0');\n this.assert(morph.getExtent().y > 0, 'height of morph not bigger than 0');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LayoutTests',\n'testing', {\n test01DropJournalLayoutOnMorph: function() {\n var container = new Morph();\n container.setExtent(new Point(200,200));\n container.setFill(Color.red);\n container.setLayouter(new lively.morphic.layout.JournalLayout());\n this.world.addMorph(container);\n\n var text = new TextMorph();\n text.setExtent(new Point(300, a.getExtent().y));\n text.setTextString('hello world');\n text.openInWorld();\n text.growOrShrinkToFit();\n\n container.addMorph(text);\n\n this.assertEquals(container.getExtent().y, 2*container.getLayouter().borderSize() + text.getExtent(), \"expected morph's extent to be 200\");\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.SelectionTest',\n'testing', {\n testGrabByHand: function() {\n LastWorld = this.world;\n\n var hand = this.world.hands.first();\n hand.setPosition(pt(10,10))\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(100,20))\n this.world.addMorph(morph2);\n\n var oldPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.world.selectionMorph.selectMorphs([morph1, morph2]);\n this.world.selectionMorph.grabByHand(hand);\n\n var newPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.assertEquals(oldPos, newPos, 'selection pos changed')\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n testDropOn: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(40,40))\n this.world.addMorph(morph2)\n\n this.world.selectionMorph.addMorph(morph1);\n this.world.selectionMorph.dropOn(morph2);\n\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n\n testAddMorph: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n testAddMorphWithSelectionInHand: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.hands.first().addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LineTest',\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(20,100), pt(100,100)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,100\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 100), m.bounds());\n },\n test02SecondPointWithNegativeY: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,-20)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {\n tagName: 'svg',\n childNodes: [{tagName: 'path', attributes: {d: /M0,0\\s*L100,-20\\s*/}}],\n attributes: {height: '20', width: '100', viewBox: '0 -20 100 20'},\n style: {top: '-20px', left: '0px'}\n }\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.bounds());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.shape.getBounds());\n },\n test03aMoveControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(10,10));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L110,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 110, 110), m.bounds());\n },\n\n test03bMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(0,-150));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,-50\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-50, 100, 50), m.bounds());\n },\n test03cMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)])\n this.world.addMorph(m);\n\n // m.getControlPoint(1).moveControlPointBy(pt(0,-150));\n m.getControlPoint(1).moveBy(pt(0,-5));\n m.getControlPoint(1).moveBy(pt(0,10));\n m.getControlPoint(1).moveBy(pt(0,-5));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,0\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 0), m.bounds());\n },\n test04InsertPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.insertControlPointBetween(0, 1, pt(20, 50));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,50\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test05MergeControlPoints: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100), pt(100,120)]);\n ctrlPoint = m.getControlPoint(1);\n\n ctrlPoint.remove();\n\n this.assertEquals(pt(0,0), m.getControlPoint(0).getPos());\n this.assertEquals(pt(100,120), m.getControlPoint(0).next().getPos());\n\n this.assertEqual(2, m.controlPoints.length, 'ctrl point not removed');\n },\n\n\n xtest05aSetOrigin: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(0,100)])\n this.world.addMorph(m);\n\n m.setOrigin(pt(-10, -10))\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg',\n // attributes: {viewBox: \"0 0 110 10\"},\n childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M10,10\\s*L10,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(pt(-10,-10), m.getPosition(), 'morph pos');\n this.assertEquals(pt(10,10), m.getPosition(), 'shape pos');\n },\n test07ControlPointsAreStable: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n ctrlPts1 = m.getControlPoints();\n m.setVertices([pt(0,0), pt(100,110), pt(100,120)]);\n var ctrlPts2 = m.getControlPoints();\n\n this.assertEquals(2, ctrlPts1.length, 'length 1')\n this.assertEquals(3, ctrlPts2.length, 'length 2')\n this.assertIdentity(ctrlPts1[0], ctrlPts2[0], 'ctronolpoints not identical 0');\n this.assertIdentity(ctrlPts1[1], ctrlPts2[1], 'ctronolpoints not identical 1');\n\n this.assertEquals(pt(0,0), ctrlPts2[0].getPos());\n this.assertEquals(pt(100,120), ctrlPts2[2].getPos());\n },\n test08GetNextAndPrevControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,110), pt(100,120)]);\n ctrlPoint = m.getControlPoint(0);\n\n this.assertEquals(pt(0,0), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,120), ctrlPoint.getPos());\n\n ctrlPoint = ctrlPoint.prev();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n },\n test09aSetArrowHead: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n test09bArrowHeadMoves: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n this.assertEquals(0, arrowHead.getRotation().toDegrees());\n\n m.getControlPoint(1).moveBy(pt(0,100));\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n});\n\n\n\n}) // end of moduledule","doNotSerialize":["$$targetURL"],"doNotCopyProperties":["$$targetURL"],"_rootNode":{"__isSmartRef__":true,"id":2511},"Pane1Selection":{"__isSmartRef__":true,"id":2543},"pane1Selection":{"__isSmartRef__":true,"id":2543},"Pane2Selection":null,"pane2Selection":null,"Pane3Selection":null,"pane3Selection":null,"Pane4Selection":null,"pane4Selection":null,"Pane4Content":["-----"],"Pane3Content":["-----"],"Pane2Content":[{"__isSmartRef__":true,"id":2795},{"__isSmartRef__":true,"id":2797},{"__isSmartRef__":true,"id":2799},{"__isSmartRef__":true,"id":2801},{"__isSmartRef__":true,"id":2803},{"__isSmartRef__":true,"id":2805},{"__isSmartRef__":true,"id":2807},{"__isSmartRef__":true,"id":2809},{"__isSmartRef__":true,"id":2811},{"__isSmartRef__":true,"id":2813},{"__isSmartRef__":true,"id":2815},{"__isSmartRef__":true,"id":2817},{"__isSmartRef__":true,"id":2819},{"__isSmartRef__":true,"id":2821},{"__isSmartRef__":true,"id":2823},{"__isSmartRef__":true,"id":2825},{"__isSmartRef__":true,"id":2827},{"__isSmartRef__":true,"id":2829},{"__isSmartRef__":true,"id":2831},{"__isSmartRef__":true,"id":2833},{"__isSmartRef__":true,"id":2835},{"__isSmartRef__":true,"id":2837},{"__isSmartRef__":true,"id":2839}],"Pane1Content":[{"__isSmartRef__":true,"id":2508},{"__isSmartRef__":true,"id":2738},{"__isSmartRef__":true,"id":2739},{"__isSmartRef__":true,"id":2740},{"__isSmartRef__":true,"id":2741},{"__isSmartRef__":true,"id":2742},{"__isSmartRef__":true,"id":2743},{"__isSmartRef__":true,"id":2744},{"__isSmartRef__":true,"id":2745},{"__isSmartRef__":true,"id":2746},{"__isSmartRef__":true,"id":2747},{"__isSmartRef__":true,"id":2748},{"__isSmartRef__":true,"id":2749},{"__isSmartRef__":true,"id":2750},{"__isSmartRef__":true,"id":2751},{"__isSmartRef__":true,"id":2752},{"__isSmartRef__":true,"id":2753},{"__isSmartRef__":true,"id":2754},{"__isSmartRef__":true,"id":2755},{"__isSmartRef__":true,"id":2756},{"__isSmartRef__":true,"id":2757},{"__isSmartRef__":true,"id":2758},{"__isSmartRef__":true,"id":2759},{"__isSmartRef__":true,"id":2760},{"__isSmartRef__":true,"id":2761},{"__isSmartRef__":true,"id":2762},{"__isSmartRef__":true,"id":2763},{"__isSmartRef__":true,"id":2764},{"__isSmartRef__":true,"id":2765},{"__isSmartRef__":true,"id":2766},{"__isSmartRef__":true,"id":2767},{"__isSmartRef__":true,"id":2768},{"__isSmartRef__":true,"id":2769},{"__isSmartRef__":true,"id":2770},{"__isSmartRef__":true,"id":2771},{"__isSmartRef__":true,"id":2772}],"Pane1Menu":[["Add to world requirements"],["remove"],["reparse"],["-------"],["open in text editor"],["show versions"],["diff versions"]],"Pane2Menu":[["-------"],["add class"],["add object extension"],["add layer"],["open in text editor"],["show versions"],["diff versions"]],"Pane3Menu":[["-------"],["open in text editor"],["show versions"],["diff versions"]],"currentModuleName":"lively.morphic.Tests","__LivelyClassName__":"lively.ide.SystemBrowser","__SourceModuleName__":"Global.lively.ide.SystemCodeBrowser"},"2253":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2254},"__LivelyClassName__":"lively.ide.AddNewFileCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2254":{"submorphs":[{"__isSmartRef__":true,"id":2255}],"scripts":[],"id":43,"renderContextTable":{"__isSmartRef__":true,"id":2267},"shape":{"__isSmartRef__":true,"id":2268},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2272},"_Position":{"__isSmartRef__":true,"id":2273},"priorExtent":{"__isSmartRef__":true,"id":2274},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2275},"label":{"__isSmartRef__":true,"id":2255},"command":{"__isSmartRef__":true,"id":2253},"attributeConnections":[{"__isSmartRef__":true,"id":2284},{"__isSmartRef__":true,"id":2285}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2255":{"submorphs":[],"scripts":[],"id":44,"renderContextTable":{"__isSmartRef__":true,"id":2256},"textChunks":[{"__isSmartRef__":true,"id":2257}],"shape":{"__isSmartRef__":true,"id":2259},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2263},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2264},"_Position":{"__isSmartRef__":true,"id":2265},"priorExtent":{"__isSmartRef__":true,"id":2266},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2254},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2256":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2257":{"style":{"__isSmartRef__":true,"id":2258},"chunkOwner":{"__isSmartRef__":true,"id":2255},"storedString":"Add module","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2258":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2259":{"_Position":{"__isSmartRef__":true,"id":2260},"renderContextTable":{"__isSmartRef__":true,"id":2261},"_Extent":{"__isSmartRef__":true,"id":2262},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2260":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2261":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2262":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2263":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2264":{"morph":{"__isSmartRef__":true,"id":2255},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2265":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2266":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2267":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2268":{"_Position":{"__isSmartRef__":true,"id":2269},"renderContextTable":{"__isSmartRef__":true,"id":2270},"_Extent":{"__isSmartRef__":true,"id":2271},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2269":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2270":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2271":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2272":{"morph":{"__isSmartRef__":true,"id":2254},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2273":{"x":0,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2274":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2275":{"stops":[{"__isSmartRef__":true,"id":2276},{"__isSmartRef__":true,"id":2278},{"__isSmartRef__":true,"id":2280},{"__isSmartRef__":true,"id":2282}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2276":{"offset":0,"color":{"__isSmartRef__":true,"id":2277}},"2277":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2278":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2279}},"2279":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2280":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2281}},"2281":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2282":{"offset":1,"color":{"__isSmartRef__":true,"id":2283}},"2283":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2284":{"sourceObj":{"__isSmartRef__":true,"id":2254},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2253},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2285":{"sourceObj":{"__isSmartRef__":true,"id":2254},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2254},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2286},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2286":{"source":{"__isSmartRef__":true,"id":2254},"target":{"__isSmartRef__":true,"id":2254}},"2287":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2288},"__LivelyClassName__":"lively.ide.AllModulesLoadCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2288":{"submorphs":[{"__isSmartRef__":true,"id":2289}],"scripts":[],"id":45,"renderContextTable":{"__isSmartRef__":true,"id":2301},"shape":{"__isSmartRef__":true,"id":2302},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2306},"_Position":{"__isSmartRef__":true,"id":2307},"priorExtent":{"__isSmartRef__":true,"id":2308},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2309},"label":{"__isSmartRef__":true,"id":2289},"command":{"__isSmartRef__":true,"id":2287},"attributeConnections":[{"__isSmartRef__":true,"id":2318},{"__isSmartRef__":true,"id":2319}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2289":{"submorphs":[],"scripts":[],"id":46,"renderContextTable":{"__isSmartRef__":true,"id":2290},"textChunks":[{"__isSmartRef__":true,"id":2291}],"shape":{"__isSmartRef__":true,"id":2293},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2297},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2298},"_Position":{"__isSmartRef__":true,"id":2299},"priorExtent":{"__isSmartRef__":true,"id":2300},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2288},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2290":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2291":{"style":{"__isSmartRef__":true,"id":2292},"chunkOwner":{"__isSmartRef__":true,"id":2289},"storedString":"Load all","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2292":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2293":{"_Position":{"__isSmartRef__":true,"id":2294},"renderContextTable":{"__isSmartRef__":true,"id":2295},"_Extent":{"__isSmartRef__":true,"id":2296},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2294":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2295":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2296":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2297":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2298":{"morph":{"__isSmartRef__":true,"id":2289},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2299":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2300":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2301":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2302":{"_Position":{"__isSmartRef__":true,"id":2303},"renderContextTable":{"__isSmartRef__":true,"id":2304},"_Extent":{"__isSmartRef__":true,"id":2305},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2303":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2304":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2305":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2306":{"morph":{"__isSmartRef__":true,"id":2288},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2307":{"x":117.14285714285714,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2308":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2309":{"stops":[{"__isSmartRef__":true,"id":2310},{"__isSmartRef__":true,"id":2312},{"__isSmartRef__":true,"id":2314},{"__isSmartRef__":true,"id":2316}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2310":{"offset":0,"color":{"__isSmartRef__":true,"id":2311}},"2311":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2312":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2313}},"2313":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2314":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2315}},"2315":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2316":{"offset":1,"color":{"__isSmartRef__":true,"id":2317}},"2317":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2318":{"sourceObj":{"__isSmartRef__":true,"id":2288},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2287},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2319":{"sourceObj":{"__isSmartRef__":true,"id":2288},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2288},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2320},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2320":{"source":{"__isSmartRef__":true,"id":2288},"target":{"__isSmartRef__":true,"id":2288}},"2321":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2322},"__LivelyClassName__":"lively.ide.ShowLineNumbersCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2322":{"submorphs":[{"__isSmartRef__":true,"id":2323}],"scripts":[],"id":47,"renderContextTable":{"__isSmartRef__":true,"id":2335},"shape":{"__isSmartRef__":true,"id":2336},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2340},"_Position":{"__isSmartRef__":true,"id":2341},"priorExtent":{"__isSmartRef__":true,"id":2342},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2343},"label":{"__isSmartRef__":true,"id":2323},"command":{"__isSmartRef__":true,"id":2321},"attributeConnections":[{"__isSmartRef__":true,"id":2352},{"__isSmartRef__":true,"id":2353}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2323":{"submorphs":[],"scripts":[],"id":48,"renderContextTable":{"__isSmartRef__":true,"id":2324},"textChunks":[{"__isSmartRef__":true,"id":2325}],"shape":{"__isSmartRef__":true,"id":2327},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2331},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2332},"_Position":{"__isSmartRef__":true,"id":2333},"priorExtent":{"__isSmartRef__":true,"id":2334},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2322},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2324":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2325":{"style":{"__isSmartRef__":true,"id":2326},"chunkOwner":{"__isSmartRef__":true,"id":2323},"storedString":"LineNo","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2326":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2327":{"_Position":{"__isSmartRef__":true,"id":2328},"renderContextTable":{"__isSmartRef__":true,"id":2329},"_Extent":{"__isSmartRef__":true,"id":2330},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2328":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2329":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2330":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2331":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2332":{"morph":{"__isSmartRef__":true,"id":2323},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2333":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2334":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2335":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2336":{"_Position":{"__isSmartRef__":true,"id":2337},"renderContextTable":{"__isSmartRef__":true,"id":2338},"_Extent":{"__isSmartRef__":true,"id":2339},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2337":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2338":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2339":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2340":{"morph":{"__isSmartRef__":true,"id":2322},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2341":{"x":234.28571428571428,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2342":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2343":{"stops":[{"__isSmartRef__":true,"id":2344},{"__isSmartRef__":true,"id":2346},{"__isSmartRef__":true,"id":2348},{"__isSmartRef__":true,"id":2350}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2344":{"offset":0,"color":{"__isSmartRef__":true,"id":2345}},"2345":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2346":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2347}},"2347":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2348":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2349}},"2349":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2350":{"offset":1,"color":{"__isSmartRef__":true,"id":2351}},"2351":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2352":{"sourceObj":{"__isSmartRef__":true,"id":2322},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2321},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2353":{"sourceObj":{"__isSmartRef__":true,"id":2322},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2322},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2354},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2354":{"source":{"__isSmartRef__":true,"id":2322},"target":{"__isSmartRef__":true,"id":2322}},"2355":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2356},"__LivelyClassName__":"lively.ide.ParserDebugCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2356":{"submorphs":[{"__isSmartRef__":true,"id":2357}],"scripts":[],"id":49,"renderContextTable":{"__isSmartRef__":true,"id":2369},"shape":{"__isSmartRef__":true,"id":2370},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2374},"_Position":{"__isSmartRef__":true,"id":2375},"priorExtent":{"__isSmartRef__":true,"id":2376},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2377},"label":{"__isSmartRef__":true,"id":2357},"command":{"__isSmartRef__":true,"id":2355},"attributeConnections":[{"__isSmartRef__":true,"id":2386},{"__isSmartRef__":true,"id":2387}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2357":{"submorphs":[],"scripts":[],"id":50,"renderContextTable":{"__isSmartRef__":true,"id":2358},"textChunks":[{"__isSmartRef__":true,"id":2359}],"shape":{"__isSmartRef__":true,"id":2361},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2365},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2366},"_Position":{"__isSmartRef__":true,"id":2367},"priorExtent":{"__isSmartRef__":true,"id":2368},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2356},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2358":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2359":{"style":{"__isSmartRef__":true,"id":2360},"chunkOwner":{"__isSmartRef__":true,"id":2357},"storedString":"Dbg errors is off","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2360":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2361":{"_Position":{"__isSmartRef__":true,"id":2362},"renderContextTable":{"__isSmartRef__":true,"id":2363},"_Extent":{"__isSmartRef__":true,"id":2364},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2362":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2363":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2364":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2365":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2366":{"morph":{"__isSmartRef__":true,"id":2357},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2367":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2368":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2369":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2370":{"_Position":{"__isSmartRef__":true,"id":2371},"renderContextTable":{"__isSmartRef__":true,"id":2372},"_Extent":{"__isSmartRef__":true,"id":2373},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2371":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2372":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2373":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2374":{"morph":{"__isSmartRef__":true,"id":2356},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2375":{"x":351.42857142857144,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2376":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2377":{"stops":[{"__isSmartRef__":true,"id":2378},{"__isSmartRef__":true,"id":2380},{"__isSmartRef__":true,"id":2382},{"__isSmartRef__":true,"id":2384}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2378":{"offset":0,"color":{"__isSmartRef__":true,"id":2379}},"2379":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2380":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2381}},"2381":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2382":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2383}},"2383":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2384":{"offset":1,"color":{"__isSmartRef__":true,"id":2385}},"2385":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2386":{"sourceObj":{"__isSmartRef__":true,"id":2356},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2355},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2387":{"sourceObj":{"__isSmartRef__":true,"id":2356},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2356},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2388},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2388":{"source":{"__isSmartRef__":true,"id":2356},"target":{"__isSmartRef__":true,"id":2356}},"2389":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2390},"__LivelyClassName__":"lively.ide.EvaluateCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2390":{"submorphs":[{"__isSmartRef__":true,"id":2391}],"scripts":[],"id":51,"renderContextTable":{"__isSmartRef__":true,"id":2403},"shape":{"__isSmartRef__":true,"id":2404},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2408},"_Position":{"__isSmartRef__":true,"id":2409},"priorExtent":{"__isSmartRef__":true,"id":2410},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2411},"label":{"__isSmartRef__":true,"id":2391},"command":{"__isSmartRef__":true,"id":2389},"attributeConnections":[{"__isSmartRef__":true,"id":2420},{"__isSmartRef__":true,"id":2421}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2391":{"submorphs":[],"scripts":[],"id":52,"renderContextTable":{"__isSmartRef__":true,"id":2392},"textChunks":[{"__isSmartRef__":true,"id":2393}],"shape":{"__isSmartRef__":true,"id":2395},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2399},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2400},"_Position":{"__isSmartRef__":true,"id":2401},"priorExtent":{"__isSmartRef__":true,"id":2402},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2390},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2392":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2393":{"style":{"__isSmartRef__":true,"id":2394},"chunkOwner":{"__isSmartRef__":true,"id":2391},"storedString":"Eval on","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2394":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2395":{"_Position":{"__isSmartRef__":true,"id":2396},"renderContextTable":{"__isSmartRef__":true,"id":2397},"_Extent":{"__isSmartRef__":true,"id":2398},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2396":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2397":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2398":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2399":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2400":{"morph":{"__isSmartRef__":true,"id":2391},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2401":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2402":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2403":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2404":{"_Position":{"__isSmartRef__":true,"id":2405},"renderContextTable":{"__isSmartRef__":true,"id":2406},"_Extent":{"__isSmartRef__":true,"id":2407},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2405":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2406":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2407":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2408":{"morph":{"__isSmartRef__":true,"id":2390},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2409":{"x":468.57142857142856,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2410":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2411":{"stops":[{"__isSmartRef__":true,"id":2412},{"__isSmartRef__":true,"id":2414},{"__isSmartRef__":true,"id":2416},{"__isSmartRef__":true,"id":2418}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2412":{"offset":0,"color":{"__isSmartRef__":true,"id":2413}},"2413":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2414":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2415}},"2415":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2416":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2417}},"2417":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2418":{"offset":1,"color":{"__isSmartRef__":true,"id":2419}},"2419":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2420":{"sourceObj":{"__isSmartRef__":true,"id":2390},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2389},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2421":{"sourceObj":{"__isSmartRef__":true,"id":2390},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2390},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2422},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2422":{"source":{"__isSmartRef__":true,"id":2390},"target":{"__isSmartRef__":true,"id":2390}},"2423":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2424},"__LivelyClassName__":"lively.ide.SortCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2424":{"submorphs":[{"__isSmartRef__":true,"id":2425}],"scripts":[],"id":53,"renderContextTable":{"__isSmartRef__":true,"id":2437},"shape":{"__isSmartRef__":true,"id":2438},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2442},"_Position":{"__isSmartRef__":true,"id":2443},"priorExtent":{"__isSmartRef__":true,"id":2444},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2445},"label":{"__isSmartRef__":true,"id":2425},"command":{"__isSmartRef__":true,"id":2423},"attributeConnections":[{"__isSmartRef__":true,"id":2454},{"__isSmartRef__":true,"id":2455}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2425":{"submorphs":[],"scripts":[],"id":54,"renderContextTable":{"__isSmartRef__":true,"id":2426},"textChunks":[{"__isSmartRef__":true,"id":2427}],"shape":{"__isSmartRef__":true,"id":2429},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2433},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2434},"_Position":{"__isSmartRef__":true,"id":2435},"priorExtent":{"__isSmartRef__":true,"id":2436},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2424},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2426":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2427":{"style":{"__isSmartRef__":true,"id":2428},"chunkOwner":{"__isSmartRef__":true,"id":2425},"storedString":"Sort","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2428":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2429":{"_Position":{"__isSmartRef__":true,"id":2430},"renderContextTable":{"__isSmartRef__":true,"id":2431},"_Extent":{"__isSmartRef__":true,"id":2432},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2430":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2431":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2432":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2433":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2434":{"morph":{"__isSmartRef__":true,"id":2425},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2435":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2436":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2437":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2438":{"_Position":{"__isSmartRef__":true,"id":2439},"renderContextTable":{"__isSmartRef__":true,"id":2440},"_Extent":{"__isSmartRef__":true,"id":2441},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2439":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2440":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2441":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2442":{"morph":{"__isSmartRef__":true,"id":2424},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2443":{"x":585.7142857142857,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2444":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2445":{"stops":[{"__isSmartRef__":true,"id":2446},{"__isSmartRef__":true,"id":2448},{"__isSmartRef__":true,"id":2450},{"__isSmartRef__":true,"id":2452}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2446":{"offset":0,"color":{"__isSmartRef__":true,"id":2447}},"2447":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2448":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2449}},"2449":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2450":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2451}},"2451":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2452":{"offset":1,"color":{"__isSmartRef__":true,"id":2453}},"2453":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2454":{"sourceObj":{"__isSmartRef__":true,"id":2424},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2423},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2455":{"sourceObj":{"__isSmartRef__":true,"id":2424},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2424},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2456},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2456":{"source":{"__isSmartRef__":true,"id":2424},"target":{"__isSmartRef__":true,"id":2424}},"2457":{"browser":{"__isSmartRef__":true,"id":2252},"button":{"__isSmartRef__":true,"id":2458},"__LivelyClassName__":"lively.ide.ViewSourceCommand","__SourceModuleName__":"Global.lively.ide.BrowserCommands"},"2458":{"submorphs":[{"__isSmartRef__":true,"id":2459}],"scripts":[],"id":55,"renderContextTable":{"__isSmartRef__":true,"id":2471},"shape":{"__isSmartRef__":true,"id":2472},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2476},"_Position":{"__isSmartRef__":true,"id":2477},"priorExtent":{"__isSmartRef__":true,"id":2478},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2479},"label":{"__isSmartRef__":true,"id":2459},"command":{"__isSmartRef__":true,"id":2457},"attributeConnections":[{"__isSmartRef__":true,"id":2488},{"__isSmartRef__":true,"id":2489}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"owner":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2459":{"submorphs":[],"scripts":[],"id":56,"renderContextTable":{"__isSmartRef__":true,"id":2460},"textChunks":[{"__isSmartRef__":true,"id":2461}],"shape":{"__isSmartRef__":true,"id":2463},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2467},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2468},"_Position":{"__isSmartRef__":true,"id":2469},"priorExtent":{"__isSmartRef__":true,"id":2470},"_MaxTextWidth":117.14285714285714,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2458},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2460":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2461":{"style":{"__isSmartRef__":true,"id":2462},"chunkOwner":{"__isSmartRef__":true,"id":2459},"storedString":"View as...","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2462":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2463":{"_Position":{"__isSmartRef__":true,"id":2464},"renderContextTable":{"__isSmartRef__":true,"id":2465},"_Extent":{"__isSmartRef__":true,"id":2466},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2464":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2465":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2466":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2467":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2468":{"morph":{"__isSmartRef__":true,"id":2459},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2469":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2470":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2471":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2472":{"_Position":{"__isSmartRef__":true,"id":2473},"renderContextTable":{"__isSmartRef__":true,"id":2474},"_Extent":{"__isSmartRef__":true,"id":2475},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2473":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2474":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2475":{"x":117.14285714285714,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2476":{"morph":{"__isSmartRef__":true,"id":2458},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2477":{"x":702.8571428571429,"y":220,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2478":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2479":{"stops":[{"__isSmartRef__":true,"id":2480},{"__isSmartRef__":true,"id":2482},{"__isSmartRef__":true,"id":2484},{"__isSmartRef__":true,"id":2486}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2480":{"offset":0,"color":{"__isSmartRef__":true,"id":2481}},"2481":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2482":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2483}},"2483":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2484":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2485}},"2485":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2486":{"offset":1,"color":{"__isSmartRef__":true,"id":2487}},"2487":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2488":{"sourceObj":{"__isSmartRef__":true,"id":2458},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2457},"targetMethodName":"trigger","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2489":{"sourceObj":{"__isSmartRef__":true,"id":2458},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2458},"targetMethodName":"setLabel","converter":null,"converterString":"function () { return this.getSourceObj().command.asString() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2490},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2490":{"source":{"__isSmartRef__":true,"id":2458},"target":{"__isSmartRef__":true,"id":2458}},"2491":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2492":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2493":{"attributes":["isClassNode","isGrammarNode","isChangeNode","isFunctionNode","isObjectNode"],"__LivelyClassName__":"lively.ide.NodeTypeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2494":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2495":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2496":{"__LivelyClassName__":"lively.ide.NodeFilter","__SourceModuleName__":"Global.lively.ide.BrowserFramework"},"2497":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lively/morphic/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"2498":{"sourceObj":{"__isSmartRef__":true,"id":2252},"sourceAttrName":"setPane1Content","targetObj":{"__isSmartRef__":true,"id":2499},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2784},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2499":{"submorphs":[],"scripts":[],"id":35,"renderContextTable":{"__isSmartRef__":true,"id":2500},"shape":{"__isSmartRef__":true,"id":2501},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":2506},"_Position":{"__isSmartRef__":true,"id":2507},"itemList":[{"__isSmartRef__":true,"id":2508},{"__isSmartRef__":true,"id":2738},{"__isSmartRef__":true,"id":2739},{"__isSmartRef__":true,"id":2740},{"__isSmartRef__":true,"id":2741},{"__isSmartRef__":true,"id":2742},{"__isSmartRef__":true,"id":2743},{"__isSmartRef__":true,"id":2744},{"__isSmartRef__":true,"id":2745},{"__isSmartRef__":true,"id":2746},{"__isSmartRef__":true,"id":2747},{"__isSmartRef__":true,"id":2748},{"__isSmartRef__":true,"id":2749},{"__isSmartRef__":true,"id":2750},{"__isSmartRef__":true,"id":2751},{"__isSmartRef__":true,"id":2752},{"__isSmartRef__":true,"id":2753},{"__isSmartRef__":true,"id":2754},{"__isSmartRef__":true,"id":2755},{"__isSmartRef__":true,"id":2756},{"__isSmartRef__":true,"id":2757},{"__isSmartRef__":true,"id":2758},{"__isSmartRef__":true,"id":2759},{"__isSmartRef__":true,"id":2760},{"__isSmartRef__":true,"id":2761},{"__isSmartRef__":true,"id":2762},{"__isSmartRef__":true,"id":2763},{"__isSmartRef__":true,"id":2764},{"__isSmartRef__":true,"id":2765},{"__isSmartRef__":true,"id":2766},{"__isSmartRef__":true,"id":2767},{"__isSmartRef__":true,"id":2768},{"__isSmartRef__":true,"id":2769},{"__isSmartRef__":true,"id":2770},{"__isSmartRef__":true,"id":2771},{"__isSmartRef__":true,"id":2772}],"selection":{"__isSmartRef__":true,"id":2543},"selectedLineNo":31,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2773},{"__isSmartRef__":true,"id":2778},{"__isSmartRef__":true,"id":2780},{"__isSmartRef__":true,"id":2782}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"prevScroll":[0,468],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"2500":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"2501":{"_Position":{"__isSmartRef__":true,"id":2502},"renderContextTable":{"__isSmartRef__":true,"id":2503},"_Extent":{"__isSmartRef__":true,"id":2504},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":2505},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2502":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2503":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2504":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2505":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2506":{"morph":{"__isSmartRef__":true,"id":2499},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2507":{"x":0,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2508":{"isListItem":true,"string":"video/","value":{"__isSmartRef__":true,"id":2509}},"2509":{"target":{"__isSmartRef__":true,"id":2510},"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"localName":"video/","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2510":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lively/morphic/video/","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"2511":{"target":{"__isSmartRef__":true,"id":1410},"browser":{"__isSmartRef__":true,"id":2252},"parent":null,"allFiles":["lively/morphic/HTML.js","lively/morphic/EventExperiments.js","lively/morphic/Widgets.js","lively/morphic/CompatSCB.js","lively/morphic/Serialization.js","lively/morphic/Rendering.js","lively/morphic/Layout.js","lively/morphic/MorphAddons.js","lively/morphic/Examples.js","lively/morphic/ObjectMigration.js","lively/morphic/BindingsTests.js","lively/morphic/ClickOnLineHack.js","lively/morphic/ColorChooserDraft.js","lively/morphic/Shapes.js","lively/morphic/Compat.js","lively/morphic/Core.js","lively/morphic/TextCore.js","lively/morphic/Tests.js","lively/morphic/Events.js","lively/morphic/Graffle.js","lively/morphic/Halos.js","lively/morphic/Complete.js","lively/morphic/Canvas.js","lively/morphic/Connectors.js","lively/morphic/CompatLayer.js","lively/morphic/Styles.js","lively/morphic/BindingsExtension.js","lively/morphic/WidgetsAddOns.js","lively/morphic/SVG.js","lively/morphic/ScriptingSupport.js","lively/morphic/PathShapes.js","lively/morphic/AdditionalMorphs.js","lively/morphic/Experiments.js"],"subNamespacePaths":[{"__isSmartRef__":true,"id":2510}],"parentNamespacePath":{"__isSmartRef__":true,"id":2512},"_childNodes":[{"__isSmartRef__":true,"id":2509},{"__isSmartRef__":true,"id":2513},{"__isSmartRef__":true,"id":2514},{"__isSmartRef__":true,"id":2515},{"__isSmartRef__":true,"id":2516},{"__isSmartRef__":true,"id":2517},{"__isSmartRef__":true,"id":2518},{"__isSmartRef__":true,"id":2519},{"__isSmartRef__":true,"id":2520},{"__isSmartRef__":true,"id":2521},{"__isSmartRef__":true,"id":2522},{"__isSmartRef__":true,"id":2523},{"__isSmartRef__":true,"id":2524},{"__isSmartRef__":true,"id":2525},{"__isSmartRef__":true,"id":2526},{"__isSmartRef__":true,"id":2527},{"__isSmartRef__":true,"id":2528},{"__isSmartRef__":true,"id":2529},{"__isSmartRef__":true,"id":2530},{"__isSmartRef__":true,"id":2531},{"__isSmartRef__":true,"id":2532},{"__isSmartRef__":true,"id":2533},{"__isSmartRef__":true,"id":2534},{"__isSmartRef__":true,"id":2535},{"__isSmartRef__":true,"id":2536},{"__isSmartRef__":true,"id":2537},{"__isSmartRef__":true,"id":2538},{"__isSmartRef__":true,"id":2539},{"__isSmartRef__":true,"id":2540},{"__isSmartRef__":true,"id":2541},{"__isSmartRef__":true,"id":2542},{"__isSmartRef__":true,"id":2543},{"__isSmartRef__":true,"id":2734},{"__isSmartRef__":true,"id":2735},{"__isSmartRef__":true,"id":2736},{"__isSmartRef__":true,"id":2737}],"__LivelyClassName__":"lively.ide.SourceControlNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2512":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lively/morphic/../","__LivelyClassName__":"URL","__SourceModuleName__":"Global.lively.Network"},"2513":{"target":{"__isSmartRef__":true,"id":2512},"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"localName":"../","__LivelyClassName__":"lively.ide.NamespaceNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2514":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/AdditionalMorphs.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2515":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/BindingsExtension.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2516":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/BindingsTests.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2517":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Canvas.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2518":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/ClickOnLineHack.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2519":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/ColorChooserDraft.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2520":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Compat.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2521":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/CompatLayer.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2522":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/CompatSCB.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2523":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Complete.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2524":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Connectors.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2525":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Core.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2526":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/EventExperiments.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2527":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Events.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2528":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Examples.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2529":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Experiments.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2530":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Graffle.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2531":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Halos.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2532":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/HTML.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2533":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Layout.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2534":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/MorphAddons.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2535":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/ObjectMigration.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2536":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/PathShapes.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2537":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Rendering.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2538":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/ScriptingSupport.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2539":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Serialization.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2540":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Shapes.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2541":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Styles.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2542":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/SVG.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2543":{"target":{"__isSmartRef__":true,"id":2544},"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Tests.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2544":{"name":"lively.morphic.Tests","type":"moduleDef","startIndex":0,"stopIndex":73474,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2545},{"__isSmartRef__":true,"id":2546},{"__isSmartRef__":true,"id":2556},{"__isSmartRef__":true,"id":2557},{"__isSmartRef__":true,"id":2560},{"__isSmartRef__":true,"id":2561},{"__isSmartRef__":true,"id":2584},{"__isSmartRef__":true,"id":2589},{"__isSmartRef__":true,"id":2590},{"__isSmartRef__":true,"id":2597},{"__isSmartRef__":true,"id":2606},{"__isSmartRef__":true,"id":2612},{"__isSmartRef__":true,"id":2613},{"__isSmartRef__":true,"id":2655},{"__isSmartRef__":true,"id":2661},{"__isSmartRef__":true,"id":2664},{"__isSmartRef__":true,"id":2674},{"__isSmartRef__":true,"id":2678},{"__isSmartRef__":true,"id":2682},{"__isSmartRef__":true,"id":2685},{"__isSmartRef__":true,"id":2692},{"__isSmartRef__":true,"id":2695},{"__isSmartRef__":true,"id":2700},{"__isSmartRef__":true,"id":2701},{"__isSmartRef__":true,"id":2704},{"__isSmartRef__":true,"id":2707},{"__isSmartRef__":true,"id":2710},{"__isSmartRef__":true,"id":2713},{"__isSmartRef__":true,"id":2719},{"__isSmartRef__":true,"id":2733}],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2545":{"name":null,"type":"comment","startIndex":110,"stopIndex":110,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2546":{"name":"lively.morphic.Tests.TestCase","type":"klassDef","startIndex":111,"stopIndex":3735,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2547},{"__isSmartRef__":true,"id":2549},{"__isSmartRef__":true,"id":2551},{"__isSmartRef__":true,"id":2552},{"__isSmartRef__":true,"id":2553},{"__isSmartRef__":true,"id":2554}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"TestCase","categories":[{"__isSmartRef__":true,"id":2548},{"__isSmartRef__":true,"id":2550},{"__isSmartRef__":true,"id":2555}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2547":{"name":"tearDown","type":"propertyDef","startIndex":175,"stopIndex":263,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2548},"className":"lively.morphic.Tests.TestCase","_owner":{"__isSmartRef__":true,"id":2546},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2548":{"name":"running","type":"categoryDef","startIndex":162,"stopIndex":266,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2547}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2549":{"name":"removeTestWorld","type":"propertyDef","startIndex":280,"stopIndex":729,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2550},"className":"lively.morphic.Tests.TestCase","_owner":{"__isSmartRef__":true,"id":2546},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2550":{"name":"helper","type":"categoryDef","startIndex":268,"stopIndex":1498,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2549},{"__isSmartRef__":true,"id":2551},{"__isSmartRef__":true,"id":2552},{"__isSmartRef__":true,"id":2553}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2551":{"name":"openMorphsInRealWorld","type":"propertyDef","startIndex":731,"stopIndex":808,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2550},"className":"lively.morphic.Tests.TestCase","_owner":{"__isSmartRef__":true,"id":2546},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2552":{"name":"createWorld","type":"propertyDef","startIndex":810,"stopIndex":1181,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2550},"className":"lively.morphic.Tests.TestCase","_owner":{"__isSmartRef__":true,"id":2546},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2553":{"name":"serializeAndDeserializeWorld","type":"propertyDef","startIndex":1183,"stopIndex":1494,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2550},"className":"lively.morphic.Tests.TestCase","_owner":{"__isSmartRef__":true,"id":2546},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2554":{"name":"assertNodeMatches","type":"propertyDef","startIndex":1515,"stopIndex":3730,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2555},"className":"lively.morphic.Tests.TestCase","_owner":{"__isSmartRef__":true,"id":2546},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2555":{"name":"assertion","type":"categoryDef","startIndex":1500,"stopIndex":3732,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2554}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2556":{"name":null,"type":"comment","startIndex":3736,"stopIndex":3736,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2557":{"name":"lively.morphic.Tests.WorldTests","type":"klassDef","startIndex":3737,"stopIndex":4340,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2558}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.TestCase","categories":[{"__isSmartRef__":true,"id":2559}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2558":{"name":"testAddWorldToDoc","type":"propertyDef","startIndex":3824,"stopIndex":4335,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2559},"className":"lively.morphic.Tests.WorldTests","_owner":{"__isSmartRef__":true,"id":2557},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2559":{"name":"testing","type":"categoryDef","startIndex":3811,"stopIndex":4337,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2558}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2560":{"name":null,"type":"comment","startIndex":4341,"stopIndex":4342,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2561":{"name":"lively.morphic.Tests.MorphTests","type":"klassDef","startIndex":4343,"stopIndex":16680,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2562},{"__isSmartRef__":true,"id":2564},{"__isSmartRef__":true,"id":2566},{"__isSmartRef__":true,"id":2567},{"__isSmartRef__":true,"id":2568},{"__isSmartRef__":true,"id":2569},{"__isSmartRef__":true,"id":2570},{"__isSmartRef__":true,"id":2571},{"__isSmartRef__":true,"id":2572},{"__isSmartRef__":true,"id":2573},{"__isSmartRef__":true,"id":2574},{"__isSmartRef__":true,"id":2575},{"__isSmartRef__":true,"id":2576},{"__isSmartRef__":true,"id":2577},{"__isSmartRef__":true,"id":2578},{"__isSmartRef__":true,"id":2579},{"__isSmartRef__":true,"id":2580},{"__isSmartRef__":true,"id":2581},{"__isSmartRef__":true,"id":2582},{"__isSmartRef__":true,"id":2583}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.TestCase","categories":[{"__isSmartRef__":true,"id":2563},{"__isSmartRef__":true,"id":2565}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2562":{"name":"setUp","type":"propertyDef","startIndex":4430,"stopIndex":4511,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2563},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2563":{"name":"running","type":"categoryDef","startIndex":4417,"stopIndex":4514,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2562}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2564":{"name":"test01AddMorph","type":"propertyDef","startIndex":4529,"stopIndex":5104,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2565":{"name":"testing","type":"categoryDef","startIndex":4516,"stopIndex":16677,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2564},{"__isSmartRef__":true,"id":2566},{"__isSmartRef__":true,"id":2567},{"__isSmartRef__":true,"id":2568},{"__isSmartRef__":true,"id":2569},{"__isSmartRef__":true,"id":2570},{"__isSmartRef__":true,"id":2571},{"__isSmartRef__":true,"id":2572},{"__isSmartRef__":true,"id":2573},{"__isSmartRef__":true,"id":2574},{"__isSmartRef__":true,"id":2575},{"__isSmartRef__":true,"id":2576},{"__isSmartRef__":true,"id":2577},{"__isSmartRef__":true,"id":2578},{"__isSmartRef__":true,"id":2579},{"__isSmartRef__":true,"id":2580},{"__isSmartRef__":true,"id":2581},{"__isSmartRef__":true,"id":2582},{"__isSmartRef__":true,"id":2583}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2566":{"name":"test02aUseSVGRenderer","type":"propertyDef","startIndex":5106,"stopIndex":5684,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2567":{"name":"test03MorphWithSVGEllipse","type":"propertyDef","startIndex":5687,"stopIndex":6323,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2568":{"name":"test04MorphLocalize","type":"propertyDef","startIndex":6325,"stopIndex":6639,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2569":{"name":"test04AddMorphBefore","type":"propertyDef","startIndex":6641,"stopIndex":7916,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2570":{"name":"testMorphBounds","type":"propertyDef","startIndex":7920,"stopIndex":8323,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2571":{"name":"test07MorphBoundsOnCreation","type":"propertyDef","startIndex":8325,"stopIndex":8686,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2572":{"name":"test08aCreateMorphWithLinearGradient","type":"propertyDef","startIndex":8688,"stopIndex":9347,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2573":{"name":"test08bCreateMorphWithradialGradient","type":"propertyDef","startIndex":9349,"stopIndex":10037,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2574":{"name":"test09BorderColorAndWidth","type":"propertyDef","startIndex":10039,"stopIndex":10896,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2575":{"name":"test10BorderRadiusHTML","type":"propertyDef","startIndex":10898,"stopIndex":11385,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2576":{"name":"test12ModifyOrigin","type":"propertyDef","startIndex":11387,"stopIndex":11694,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2577":{"name":"test13ModifyOriginWithTransformation","type":"propertyDef","startIndex":11696,"stopIndex":12234,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2578":{"name":"test14ModifyOriginWithScale","type":"propertyDef","startIndex":12236,"stopIndex":12620,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2579":{"name":"test15ModifyOriginWithSubmorphs","type":"propertyDef","startIndex":12622,"stopIndex":13065,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2580":{"name":"test16MorphsContainingPoint","type":"propertyDef","startIndex":13068,"stopIndex":14748,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2581":{"name":"test17MorphsContainingPointWithAddMorphFront","type":"propertyDef","startIndex":14750,"stopIndex":15414,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2582":{"name":"test18OrderOfMorphsOnScrennAndInSubmorphArrayMatches","type":"propertyDef","startIndex":15416,"stopIndex":15874,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2583":{"name":"test19MorphsContainingPointDosNotIncludeOffsetedOwner","type":"propertyDef","startIndex":15876,"stopIndex":16668,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2565},"className":"lively.morphic.Tests.MorphTests","_owner":{"__isSmartRef__":true,"id":2561},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2584":{"name":"lively.morphic.Tests.EventTests","type":"klassDef","startIndex":16681,"stopIndex":19711,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2585},{"__isSmartRef__":true,"id":2587},{"__isSmartRef__":true,"id":2588}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2586}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2585":{"name":"xtest05DropMorph","type":"propertyDef","startIndex":16770,"stopIndex":17879,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2586},"className":"lively.morphic.Tests.EventTests","_owner":{"__isSmartRef__":true,"id":2584},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2586":{"name":"testing","type":"categoryDef","startIndex":16757,"stopIndex":19708,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2585},{"__isSmartRef__":true,"id":2587},{"__isSmartRef__":true,"id":2588}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2587":{"name":"test01DragMorph","type":"propertyDef","startIndex":17881,"stopIndex":19184,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2586},"className":"lively.morphic.Tests.EventTests","_owner":{"__isSmartRef__":true,"id":2584},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2588":{"name":"test02RelayMouseEventsToMorphBeneath","type":"propertyDef","startIndex":19186,"stopIndex":19705,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2586},"className":"lively.morphic.Tests.EventTests","_owner":{"__isSmartRef__":true,"id":2584},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2589":{"name":null,"type":"comment","startIndex":19712,"stopIndex":19716,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2590":{"name":"lively.morphic.Tests.CopyMorphTests","type":"klassDef","startIndex":19717,"stopIndex":21982,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2591},{"__isSmartRef__":true,"id":2593},{"__isSmartRef__":true,"id":2594},{"__isSmartRef__":true,"id":2595},{"__isSmartRef__":true,"id":2596}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2592}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2591":{"name":"test01CopySimpleMorph","type":"propertyDef","startIndex":19810,"stopIndex":20132,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2592},"className":"lively.morphic.Tests.CopyMorphTests","_owner":{"__isSmartRef__":true,"id":2590},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2592":{"name":"testing","type":"categoryDef","startIndex":19797,"stopIndex":21979,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2591},{"__isSmartRef__":true,"id":2593},{"__isSmartRef__":true,"id":2594},{"__isSmartRef__":true,"id":2595},{"__isSmartRef__":true,"id":2596}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2593":{"name":"test02ReferencedMorphThatIsNotASubmorphIsNotCopied","type":"propertyDef","startIndex":20134,"stopIndex":20795,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2592},"className":"lively.morphic.Tests.CopyMorphTests","_owner":{"__isSmartRef__":true,"id":2590},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2594":{"name":"test03OwnerIsNotCopied","type":"propertyDef","startIndex":20797,"stopIndex":21002,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2592},"className":"lively.morphic.Tests.CopyMorphTests","_owner":{"__isSmartRef__":true,"id":2590},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2595":{"name":"test04CopyMorphTreeWithEventHandlers","type":"propertyDef","startIndex":21004,"stopIndex":21627,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2592},"className":"lively.morphic.Tests.CopyMorphTests","_owner":{"__isSmartRef__":true,"id":2590},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2596":{"name":"test05CopySetsNewTargetForScripts","type":"propertyDef","startIndex":21629,"stopIndex":21973,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2592},"className":"lively.morphic.Tests.CopyMorphTests","_owner":{"__isSmartRef__":true,"id":2590},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2597":{"name":"lively.morphic.Tests.TextMorphTests","type":"klassDef","startIndex":21983,"stopIndex":25026,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2598},{"__isSmartRef__":true,"id":2600},{"__isSmartRef__":true,"id":2601},{"__isSmartRef__":true,"id":2602},{"__isSmartRef__":true,"id":2603},{"__isSmartRef__":true,"id":2604},{"__isSmartRef__":true,"id":2605}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2599}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2598":{"name":"test01TextMorphHTML","type":"propertyDef","startIndex":22076,"stopIndex":22543,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2599":{"name":"testing","type":"categoryDef","startIndex":22063,"stopIndex":25023,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2598},{"__isSmartRef__":true,"id":2600},{"__isSmartRef__":true,"id":2601},{"__isSmartRef__":true,"id":2602},{"__isSmartRef__":true,"id":2603},{"__isSmartRef__":true,"id":2604},{"__isSmartRef__":true,"id":2605}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2600":{"name":"test02TextMorphSVG","type":"propertyDef","startIndex":22545,"stopIndex":23035,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2601":{"name":"test03TextStringIsConnectable","type":"propertyDef","startIndex":23037,"stopIndex":23343,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2602":{"name":"test04GrowToFit","type":"propertyDef","startIndex":23345,"stopIndex":23684,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2603":{"name":"test05SetSelectionRange","type":"propertyDef","startIndex":23687,"stopIndex":24191,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2604":{"name":"test05bSetSelectionRangeRightToLeft","type":"propertyDef","startIndex":24193,"stopIndex":24564,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2605":{"name":"test06ModifySelectedLinesInsertsAtCorrectPosition","type":"propertyDef","startIndex":24567,"stopIndex":25014,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2599},"className":"lively.morphic.Tests.TextMorphTests","_owner":{"__isSmartRef__":true,"id":2597},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2606":{"name":"lively.morphic.Tests.ScrollTests","type":"klassDef","startIndex":25027,"stopIndex":26387,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2607},{"__isSmartRef__":true,"id":2609},{"__isSmartRef__":true,"id":2611}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2608},{"__isSmartRef__":true,"id":2610}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2607":{"name":"setUp","type":"propertyDef","startIndex":25117,"stopIndex":25516,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2608},"className":"lively.morphic.Tests.ScrollTests","_owner":{"__isSmartRef__":true,"id":2606},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2608":{"name":"running","type":"categoryDef","startIndex":25104,"stopIndex":25519,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2607}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2609":{"name":"test01ScrollSelectionAtBottomIntoView","type":"propertyDef","startIndex":25535,"stopIndex":26120,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2610},"className":"lively.morphic.Tests.ScrollTests","_owner":{"__isSmartRef__":true,"id":2606},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2610":{"name":"testing","type":"categoryDef","startIndex":25521,"stopIndex":26384,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2609},{"__isSmartRef__":true,"id":2611}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2611":{"name":"test02ScrollWorld","type":"propertyDef","startIndex":26122,"stopIndex":26380,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2610},"className":"lively.morphic.Tests.ScrollTests","_owner":{"__isSmartRef__":true,"id":2606},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2612":{"name":null,"type":"comment","startIndex":26388,"stopIndex":26388,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2613":{"name":"lively.morphic.Tests.TextMorphRichTextTests","type":"klassDef","startIndex":26389,"stopIndex":47544,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2614},{"__isSmartRef__":true,"id":2616},{"__isSmartRef__":true,"id":2617},{"__isSmartRef__":true,"id":2618},{"__isSmartRef__":true,"id":2619},{"__isSmartRef__":true,"id":2621},{"__isSmartRef__":true,"id":2622},{"__isSmartRef__":true,"id":2623},{"__isSmartRef__":true,"id":2624},{"__isSmartRef__":true,"id":2625},{"__isSmartRef__":true,"id":2626},{"__isSmartRef__":true,"id":2627},{"__isSmartRef__":true,"id":2628},{"__isSmartRef__":true,"id":2629},{"__isSmartRef__":true,"id":2630},{"__isSmartRef__":true,"id":2631},{"__isSmartRef__":true,"id":2632},{"__isSmartRef__":true,"id":2633},{"__isSmartRef__":true,"id":2634},{"__isSmartRef__":true,"id":2635},{"__isSmartRef__":true,"id":2636},{"__isSmartRef__":true,"id":2637},{"__isSmartRef__":true,"id":2638},{"__isSmartRef__":true,"id":2639},{"__isSmartRef__":true,"id":2640},{"__isSmartRef__":true,"id":2641},{"__isSmartRef__":true,"id":2642},{"__isSmartRef__":true,"id":2643},{"__isSmartRef__":true,"id":2644},{"__isSmartRef__":true,"id":2645},{"__isSmartRef__":true,"id":2646},{"__isSmartRef__":true,"id":2647},{"__isSmartRef__":true,"id":2648},{"__isSmartRef__":true,"id":2649},{"__isSmartRef__":true,"id":2650},{"__isSmartRef__":true,"id":2651},{"__isSmartRef__":true,"id":2652},{"__isSmartRef__":true,"id":2653},{"__isSmartRef__":true,"id":2654}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2615},{"__isSmartRef__":true,"id":2620}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2614":{"name":"setUp","type":"propertyDef","startIndex":26490,"stopIndex":26856,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2615},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2615":{"name":"running","type":"categoryDef","startIndex":26477,"stopIndex":27460,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2614},{"__isSmartRef__":true,"id":2616},{"__isSmartRef__":true,"id":2617},{"__isSmartRef__":true,"id":2618}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2616":{"name":"checkRunArray","type":"propertyDef","startIndex":26858,"stopIndex":26998,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2615},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2617":{"name":"checkChunks","type":"propertyDef","startIndex":27000,"stopIndex":27120,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2615},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2618":{"name":"checkDOM","type":"propertyDef","startIndex":27123,"stopIndex":27455,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2615},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2619":{"name":"test01MorphHasTextChunk","type":"propertyDef","startIndex":27475,"stopIndex":27880,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2620":{"name":"testing","type":"categoryDef","startIndex":27462,"stopIndex":47541,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2619},{"__isSmartRef__":true,"id":2621},{"__isSmartRef__":true,"id":2622},{"__isSmartRef__":true,"id":2623},{"__isSmartRef__":true,"id":2624},{"__isSmartRef__":true,"id":2625},{"__isSmartRef__":true,"id":2626},{"__isSmartRef__":true,"id":2627},{"__isSmartRef__":true,"id":2628},{"__isSmartRef__":true,"id":2629},{"__isSmartRef__":true,"id":2630},{"__isSmartRef__":true,"id":2631},{"__isSmartRef__":true,"id":2632},{"__isSmartRef__":true,"id":2633},{"__isSmartRef__":true,"id":2634},{"__isSmartRef__":true,"id":2635},{"__isSmartRef__":true,"id":2636},{"__isSmartRef__":true,"id":2637},{"__isSmartRef__":true,"id":2638},{"__isSmartRef__":true,"id":2639},{"__isSmartRef__":true,"id":2640},{"__isSmartRef__":true,"id":2641},{"__isSmartRef__":true,"id":2642},{"__isSmartRef__":true,"id":2643},{"__isSmartRef__":true,"id":2644},{"__isSmartRef__":true,"id":2645},{"__isSmartRef__":true,"id":2646},{"__isSmartRef__":true,"id":2647},{"__isSmartRef__":true,"id":2648},{"__isSmartRef__":true,"id":2649},{"__isSmartRef__":true,"id":2650},{"__isSmartRef__":true,"id":2651},{"__isSmartRef__":true,"id":2652},{"__isSmartRef__":true,"id":2653},{"__isSmartRef__":true,"id":2654}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2621":{"name":"test02MorphHasTextChunkWhenTextStringIsSet","type":"propertyDef","startIndex":27882,"stopIndex":28197,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2622":{"name":"test03SplitAndJoinTextChunks","type":"propertyDef","startIndex":28199,"stopIndex":29110,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2623":{"name":"test03bCoalesceChunks","type":"propertyDef","startIndex":29112,"stopIndex":29436,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2624":{"name":"test03cSplitAtFrontAndBack","type":"propertyDef","startIndex":29438,"stopIndex":29844,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2625":{"name":"test03cSplittedChunkGetsStyle","type":"propertyDef","startIndex":29846,"stopIndex":30159,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2626":{"name":"test04SliceTextChunksSimple","type":"propertyDef","startIndex":30164,"stopIndex":30567,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2627":{"name":"test04SliceTextChunks","type":"propertyDef","startIndex":30570,"stopIndex":31077,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2628":{"name":"test04SliceTextChunksAgain","type":"propertyDef","startIndex":31079,"stopIndex":31389,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2629":{"name":"test05StyleChunk","type":"propertyDef","startIndex":31392,"stopIndex":31641,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2630":{"name":"test06MakeTextBold","type":"propertyDef","startIndex":31643,"stopIndex":32065,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2631":{"name":"test07MakeTextBoldThenUnbold","type":"propertyDef","startIndex":32070,"stopIndex":32349,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2632":{"name":"test08ToggleBoldnessComplete","type":"propertyDef","startIndex":32351,"stopIndex":32770,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2633":{"name":"test09ChunksAreSerializable","type":"propertyDef","startIndex":32772,"stopIndex":33237,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2634":{"name":"test10ConvertSelectionRangeForEmphasis","type":"propertyDef","startIndex":33239,"stopIndex":33951,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2635":{"name":"test11ToggleBoldnessWithChunkWithMultipleTextNodes","type":"propertyDef","startIndex":33953,"stopIndex":34859,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2636":{"name":"test11FixChunksShouldKeepSlection","type":"propertyDef","startIndex":34861,"stopIndex":35557,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2637":{"name":"test12GetAndSetSelectionRangeHaveEqualValues","type":"propertyDef","startIndex":35559,"stopIndex":35844,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2638":{"name":"test13InsertedTextBetweenChunksIsAssimilated","type":"propertyDef","startIndex":35846,"stopIndex":36703,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2639":{"name":"test14GetEmphasisAt","type":"propertyDef","startIndex":36705,"stopIndex":37332,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2640":{"name":"test15GetChunkAndLocalIndex","type":"propertyDef","startIndex":37335,"stopIndex":38376,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2641":{"name":"test16AddLink","type":"propertyDef","startIndex":38378,"stopIndex":38839,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2642":{"name":"test17AddLinkMakeBoldThenUnbold","type":"propertyDef","startIndex":38841,"stopIndex":39368,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2643":{"name":"test18LinkifiedChunkShouldKeepLinkWhenTextStringChanges","type":"propertyDef","startIndex":39370,"stopIndex":39813,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2644":{"name":"test19FixChunksShouldRemoveElements","type":"propertyDef","startIndex":39815,"stopIndex":40411,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2645":{"name":"test20HandleSplittedSpanNodes","type":"propertyDef","startIndex":40413,"stopIndex":41174,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2646":{"name":"test21HandleSplittedSpanNodesAndTextAttributes","type":"propertyDef","startIndex":41176,"stopIndex":42161,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2647":{"name":"test22ReclaimRemovedSpanNodesOnPaste","type":"propertyDef","startIndex":42163,"stopIndex":43438,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2648":{"name":"test23ReclaimRemovedChunkNodeAndReapplyTextAttributes","type":"propertyDef","startIndex":43440,"stopIndex":44569,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2649":{"name":"test22EmphasizeRegex","type":"propertyDef","startIndex":44573,"stopIndex":45036,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2650":{"name":"richTextPasteData","type":"propertyDef","startIndex":45038,"stopIndex":45890,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2651":{"name":"test23aRichTextPaste","type":"propertyDef","startIndex":45893,"stopIndex":46404,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2652":{"name":"test24aInsertTextChunks","type":"propertyDef","startIndex":46406,"stopIndex":46795,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2653":{"name":"test24bInsertTextChunks","type":"propertyDef","startIndex":46797,"stopIndex":47240,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2654":{"name":"test25SlicingTextChunksWithRangeWithLengthZero","type":"propertyDef","startIndex":47243,"stopIndex":47536,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2620},"className":"lively.morphic.Tests.TextMorphRichTextTests","_owner":{"__isSmartRef__":true,"id":2613},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2655":{"name":"lively.morphic.Tests.RichTextTests","type":"klassDef","startIndex":47545,"stopIndex":49241,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2656},{"__isSmartRef__":true,"id":2658},{"__isSmartRef__":true,"id":2659},{"__isSmartRef__":true,"id":2660}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.TextMorphRichTextTests","categories":[{"__isSmartRef__":true,"id":2657}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2656":{"name":"test01CreateRichText","type":"propertyDef","startIndex":47649,"stopIndex":47837,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2657},"className":"lively.morphic.Tests.RichTextTests","_owner":{"__isSmartRef__":true,"id":2655},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2657":{"name":"testing","type":"categoryDef","startIndex":47636,"stopIndex":49238,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2656},{"__isSmartRef__":true,"id":2658},{"__isSmartRef__":true,"id":2659},{"__isSmartRef__":true,"id":2660}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2658":{"name":"test02GetRichText","type":"propertyDef","startIndex":47839,"stopIndex":48009,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2657},"className":"lively.morphic.Tests.RichTextTests","_owner":{"__isSmartRef__":true,"id":2655},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2659":{"name":"test03EmphasizeRichText","type":"propertyDef","startIndex":48011,"stopIndex":48564,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2657},"className":"lively.morphic.Tests.RichTextTests","_owner":{"__isSmartRef__":true,"id":2655},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2660":{"name":"test04InsertInText","type":"propertyDef","startIndex":48566,"stopIndex":49233,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2657},"className":"lively.morphic.Tests.RichTextTests","_owner":{"__isSmartRef__":true,"id":2655},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2661":{"name":"lively.morphic.Tests.ButtonMorphTests","type":"klassDef","startIndex":49242,"stopIndex":49570,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2662}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2663}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2662":{"name":"test01MorphBoundsOnCreation","type":"propertyDef","startIndex":49337,"stopIndex":49565,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2663},"className":"lively.morphic.Tests.ButtonMorphTests","_owner":{"__isSmartRef__":true,"id":2661},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2663":{"name":"testing","type":"categoryDef","startIndex":49324,"stopIndex":49567,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2662}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2664":{"name":"lively.morphic.Tests.ListMorphTests","type":"klassDef","startIndex":49571,"stopIndex":53323,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2665},{"__isSmartRef__":true,"id":2667},{"__isSmartRef__":true,"id":2668},{"__isSmartRef__":true,"id":2669},{"__isSmartRef__":true,"id":2670},{"__isSmartRef__":true,"id":2671},{"__isSmartRef__":true,"id":2672},{"__isSmartRef__":true,"id":2673}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2666}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2665":{"name":"test01SetAndRetrieveStringItems","type":"propertyDef","startIndex":49664,"stopIndex":49963,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2666":{"name":"testing","type":"categoryDef","startIndex":49651,"stopIndex":53320,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2665},{"__isSmartRef__":true,"id":2667},{"__isSmartRef__":true,"id":2668},{"__isSmartRef__":true,"id":2669},{"__isSmartRef__":true,"id":2670},{"__isSmartRef__":true,"id":2671},{"__isSmartRef__":true,"id":2672},{"__isSmartRef__":true,"id":2673}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2667":{"name":"test02SelectAt","type":"propertyDef","startIndex":49965,"stopIndex":50369,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2668":{"name":"test03SelectListItem","type":"propertyDef","startIndex":50371,"stopIndex":50747,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2669":{"name":"test04ListMorphBoundsOnCreationInHTML","type":"propertyDef","startIndex":50750,"stopIndex":51168,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2670":{"name":"test05ListMorphKeepsSelectionHighlightOnUpdateList","type":"propertyDef","startIndex":51170,"stopIndex":51762,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2671":{"name":"test06SetSelectionWithListItems","type":"propertyDef","startIndex":51764,"stopIndex":52114,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2672":{"name":"testAddMorphDuplicatesListsBug","type":"propertyDef","startIndex":52116,"stopIndex":52584,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2673":{"name":"testUpdateListOnSelectionHighlightsSelectionCorrectly","type":"propertyDef","startIndex":52586,"stopIndex":53313,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2666},"className":"lively.morphic.Tests.ListMorphTests","_owner":{"__isSmartRef__":true,"id":2664},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2674":{"name":"lively.morphic.Tests.AppTests","type":"klassDef","startIndex":53324,"stopIndex":54226,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2675},{"__isSmartRef__":true,"id":2677}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2676}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2675":{"name":"test01ConfirmDialog","type":"propertyDef","startIndex":53411,"stopIndex":53775,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2676},"className":"lively.morphic.Tests.AppTests","_owner":{"__isSmartRef__":true,"id":2674},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2676":{"name":"testing","type":"categoryDef","startIndex":53398,"stopIndex":54223,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2675},{"__isSmartRef__":true,"id":2677}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2677":{"name":"test02PromptDialog","type":"propertyDef","startIndex":53777,"stopIndex":54221,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2676},"className":"lively.morphic.Tests.AppTests","_owner":{"__isSmartRef__":true,"id":2674},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2678":{"name":"lively.morphic.Tests.CanvasRenderingTests","type":"klassDef","startIndex":54227,"stopIndex":55391,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2679},{"__isSmartRef__":true,"id":2681}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2680}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2679":{"name":"test01UseCanvasRendererForSimpleMorph","type":"propertyDef","startIndex":54326,"stopIndex":54816,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2680},"className":"lively.morphic.Tests.CanvasRenderingTests","_owner":{"__isSmartRef__":true,"id":2678},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2680":{"name":"testing","type":"categoryDef","startIndex":54313,"stopIndex":55388,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2679},{"__isSmartRef__":true,"id":2681}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2681":{"name":"test02MorphAndSubmorphWithCanvas","type":"propertyDef","startIndex":54818,"stopIndex":55386,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2680},"className":"lively.morphic.Tests.CanvasRenderingTests","_owner":{"__isSmartRef__":true,"id":2678},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2682":{"name":"lively.morphic.Tests.SimilitudeTests","type":"klassDef","startIndex":55392,"stopIndex":55967,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2683}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"TestCase","categories":[{"__isSmartRef__":true,"id":2684}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2683":{"name":"test01PointTransform","type":"propertyDef","startIndex":55463,"stopIndex":55962,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2684},"className":"lively.morphic.Tests.SimilitudeTests","_owner":{"__isSmartRef__":true,"id":2682},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2684":{"name":"testing","type":"categoryDef","startIndex":55450,"stopIndex":55964,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2683}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2685":{"name":"lively.morphic.Tests.ScriptTests","type":"klassDef","startIndex":55968,"stopIndex":58561,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2686},{"__isSmartRef__":true,"id":2688},{"__isSmartRef__":true,"id":2689},{"__isSmartRef__":true,"id":2690},{"__isSmartRef__":true,"id":2691}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"AsyncTestCase","categories":[{"__isSmartRef__":true,"id":2687}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2686":{"name":"test01StartAndStopTicking","type":"propertyDef","startIndex":56040,"stopIndex":56354,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2687},"className":"lively.morphic.Tests.ScriptTests","_owner":{"__isSmartRef__":true,"id":2685},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2687":{"name":"testing","type":"categoryDef","startIndex":56027,"stopIndex":58558,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2686},{"__isSmartRef__":true,"id":2688},{"__isSmartRef__":true,"id":2689},{"__isSmartRef__":true,"id":2690},{"__isSmartRef__":true,"id":2691}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2688":{"name":"test02SuspendAndContinue","type":"propertyDef","startIndex":56356,"stopIndex":56904,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2687},"className":"lively.morphic.Tests.ScriptTests","_owner":{"__isSmartRef__":true,"id":2685},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2689":{"name":"test03MorphStartStepping","type":"propertyDef","startIndex":56906,"stopIndex":57468,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2687},"className":"lively.morphic.Tests.ScriptTests","_owner":{"__isSmartRef__":true,"id":2685},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2690":{"name":"test04ScriptEquals","type":"propertyDef","startIndex":57470,"stopIndex":58122,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2687},"className":"lively.morphic.Tests.ScriptTests","_owner":{"__isSmartRef__":true,"id":2685},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2691":{"name":"test05StartSteppingChecksIfScriptIsThere","type":"propertyDef","startIndex":58124,"stopIndex":58551,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2687},"className":"lively.morphic.Tests.ScriptTests","_owner":{"__isSmartRef__":true,"id":2685},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2692":{"name":"lively.morphic.Tests.SerializationTests","type":"klassDef","startIndex":58562,"stopIndex":59300,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2693}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.TestCase","categories":[{"__isSmartRef__":true,"id":2694}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2693":{"name":"test01SerializeSimpleWorld","type":"propertyDef","startIndex":58657,"stopIndex":59295,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2694},"className":"lively.morphic.Tests.SerializationTests","_owner":{"__isSmartRef__":true,"id":2692},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2694":{"name":"testing","type":"categoryDef","startIndex":58644,"stopIndex":59297,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2693}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2695":{"name":"lively.morphic.Tests.HaloTests","type":"klassDef","startIndex":59301,"stopIndex":60963,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2696},{"__isSmartRef__":true,"id":2698},{"__isSmartRef__":true,"id":2699}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.TestCase","categories":[{"__isSmartRef__":true,"id":2697}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2696":{"name":"test01ShowHalosForMorph","type":"propertyDef","startIndex":59387,"stopIndex":59732,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2697},"className":"lively.morphic.Tests.HaloTests","_owner":{"__isSmartRef__":true,"id":2695},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2697":{"name":"testing","type":"categoryDef","startIndex":59374,"stopIndex":60960,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2696},{"__isSmartRef__":true,"id":2698},{"__isSmartRef__":true,"id":2699}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2698":{"name":"test02HalosStayInVisibleBounds","type":"propertyDef","startIndex":59734,"stopIndex":60268,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2697},"className":"lively.morphic.Tests.HaloTests","_owner":{"__isSmartRef__":true,"id":2695},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2699":{"name":"testTransformRectSoThatItFitsInOuter","type":"propertyDef","startIndex":60270,"stopIndex":60956,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2697},"className":"lively.morphic.Tests.HaloTests","_owner":{"__isSmartRef__":true,"id":2695},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2700":{"name":null,"type":"comment","startIndex":60964,"stopIndex":60965,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2701":{"name":"lively.morphic.Tests.ImageTests","type":"klassDef","startIndex":60966,"stopIndex":61543,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2702}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2703}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2702":{"name":"testImageMorphHTML","type":"propertyDef","startIndex":61055,"stopIndex":61538,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2703},"className":"lively.morphic.Tests.ImageTests","_owner":{"__isSmartRef__":true,"id":2701},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2703":{"name":"testing","type":"categoryDef","startIndex":61042,"stopIndex":61540,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2702}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2704":{"name":"lively.morphic.Tests.MenuTests","type":"klassDef","startIndex":61544,"stopIndex":62046,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2705}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2706}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2705":{"name":"testWrongSubMenuItems","type":"propertyDef","startIndex":61632,"stopIndex":62041,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2706},"className":"lively.morphic.Tests.MenuTests","_owner":{"__isSmartRef__":true,"id":2704},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2706":{"name":"testing","type":"categoryDef","startIndex":61619,"stopIndex":62043,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2705}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2707":{"name":"lively.morphic.Tests.ExternalShapesTests","type":"klassDef","startIndex":62047,"stopIndex":62517,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2708}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2709}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2708":{"name":"test01AddADivShape","type":"propertyDef","startIndex":62145,"stopIndex":62512,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2709},"className":"lively.morphic.Tests.ExternalShapesTests","_owner":{"__isSmartRef__":true,"id":2707},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2709":{"name":"testing","type":"categoryDef","startIndex":62132,"stopIndex":62514,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2708}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2710":{"name":"lively.morphic.Tests.LayoutTests","type":"klassDef","startIndex":62518,"stopIndex":63288,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2711}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2712}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2711":{"name":"test01DropJournalLayoutOnMorph","type":"propertyDef","startIndex":62608,"stopIndex":63283,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2712},"className":"lively.morphic.Tests.LayoutTests","_owner":{"__isSmartRef__":true,"id":2710},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2712":{"name":"testing","type":"categoryDef","startIndex":62595,"stopIndex":63285,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2711}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2713":{"name":"lively.morphic.Tests.SelectionTest","type":"klassDef","startIndex":63289,"stopIndex":66288,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2714},{"__isSmartRef__":true,"id":2716},{"__isSmartRef__":true,"id":2717},{"__isSmartRef__":true,"id":2718}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2715}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2714":{"name":"testGrabByHand","type":"propertyDef","startIndex":63381,"stopIndex":64421,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2715},"className":"lively.morphic.Tests.SelectionTest","_owner":{"__isSmartRef__":true,"id":2713},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2715":{"name":"testing","type":"categoryDef","startIndex":63368,"stopIndex":66285,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2714},{"__isSmartRef__":true,"id":2716},{"__isSmartRef__":true,"id":2717},{"__isSmartRef__":true,"id":2718}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2716":{"name":"testDropOn","type":"propertyDef","startIndex":64423,"stopIndex":65160,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2715},"className":"lively.morphic.Tests.SelectionTest","_owner":{"__isSmartRef__":true,"id":2713},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2717":{"name":"testAddMorph","type":"propertyDef","startIndex":65164,"stopIndex":65706,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2715},"className":"lively.morphic.Tests.SelectionTest","_owner":{"__isSmartRef__":true,"id":2713},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2718":{"name":"testAddMorphWithSelectionInHand","type":"propertyDef","startIndex":65709,"stopIndex":66283,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2715},"className":"lively.morphic.Tests.SelectionTest","_owner":{"__isSmartRef__":true,"id":2713},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2719":{"name":"lively.morphic.Tests.LineTest","type":"klassDef","startIndex":66289,"stopIndex":73448,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2720},{"__isSmartRef__":true,"id":2722},{"__isSmartRef__":true,"id":2723},{"__isSmartRef__":true,"id":2724},{"__isSmartRef__":true,"id":2725},{"__isSmartRef__":true,"id":2726},{"__isSmartRef__":true,"id":2727},{"__isSmartRef__":true,"id":2728},{"__isSmartRef__":true,"id":2729},{"__isSmartRef__":true,"id":2730},{"__isSmartRef__":true,"id":2731},{"__isSmartRef__":true,"id":2732}],"sourceControl":{"__isSmartRef__":true,"id":1410},"superclassName":"lively.morphic.Tests.MorphTests","categories":[{"__isSmartRef__":true,"id":2721}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2720":{"name":"test01AddMorph","type":"propertyDef","startIndex":66376,"stopIndex":66940,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2721":{"name":"testing","type":"categoryDef","startIndex":66363,"stopIndex":73445,"fileName":"lively/morphic/Tests.js","_subElements":[{"__isSmartRef__":true,"id":2720},{"__isSmartRef__":true,"id":2722},{"__isSmartRef__":true,"id":2723},{"__isSmartRef__":true,"id":2724},{"__isSmartRef__":true,"id":2725},{"__isSmartRef__":true,"id":2726},{"__isSmartRef__":true,"id":2727},{"__isSmartRef__":true,"id":2728},{"__isSmartRef__":true,"id":2729},{"__isSmartRef__":true,"id":2730},{"__isSmartRef__":true,"id":2731},{"__isSmartRef__":true,"id":2732}],"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2722":{"name":"test02SecondPointWithNegativeY","type":"propertyDef","startIndex":66942,"stopIndex":67733,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2723":{"name":"test03aMoveControlPoint","type":"propertyDef","startIndex":67735,"stopIndex":68334,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2724":{"name":"test03bMoveControlPoint2AboveStart","type":"propertyDef","startIndex":68337,"stopIndex":68950,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2725":{"name":"test03cMoveControlPoint2AboveStart","type":"propertyDef","startIndex":68952,"stopIndex":69713,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2726":{"name":"test04InsertPoint","type":"propertyDef","startIndex":69715,"stopIndex":70256,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2727":{"name":"test05MergeControlPoints","type":"propertyDef","startIndex":70258,"stopIndex":70685,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2728":{"name":"xtest05aSetOrigin","type":"propertyDef","startIndex":70689,"stopIndex":71416,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2729":{"name":"test07ControlPointsAreStable","type":"propertyDef","startIndex":71418,"stopIndex":72099,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2730":{"name":"test08GetNextAndPrevControlPoint","type":"propertyDef","startIndex":72101,"stopIndex":72633,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2731":{"name":"test09aSetArrowHead","type":"propertyDef","startIndex":72635,"stopIndex":72980,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2732":{"name":"test09bArrowHeadMoves","type":"propertyDef","startIndex":72982,"stopIndex":73443,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"_isStatic":false,"category":{"__isSmartRef__":true,"id":2721},"className":"lively.morphic.Tests.LineTest","_owner":{"__isSmartRef__":true,"id":2719},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2733":{"name":null,"type":"comment","startIndex":73449,"stopIndex":73451,"fileName":"lively/morphic/Tests.js","_subElements":[],"sourceControl":{"__isSmartRef__":true,"id":1410},"__LivelyClassName__":"lively.ide.FileFragment","__SourceModuleName__":"Global.lively.ide.FileParsing"},"2734":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/TextCore.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2735":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/Widgets.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2736":{"browser":{"__isSmartRef__":true,"id":2252},"parent":{"__isSmartRef__":true,"id":2511},"moduleName":"lively/morphic/WidgetsAddOns.js","showAll":false,"__LivelyClassName__":"lively.ide.CompleteFileFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2737":{"target":{"__isSmartRef__":true,"id":1517},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.ChangeSetNode","__SourceModuleName__":"Global.lively.ide.LocalBrowser"},"2738":{"isListItem":true,"string":"../","value":{"__isSmartRef__":true,"id":2513}},"2739":{"isListItem":true,"string":"AdditionalMorphs.js (not parsed)","value":{"__isSmartRef__":true,"id":2514}},"2740":{"isListItem":true,"string":"BindingsExtension.js (not parsed)","value":{"__isSmartRef__":true,"id":2515}},"2741":{"isListItem":true,"string":"BindingsTests.js (not parsed)","value":{"__isSmartRef__":true,"id":2516}},"2742":{"isListItem":true,"string":"Canvas.js (not parsed)","value":{"__isSmartRef__":true,"id":2517}},"2743":{"isListItem":true,"string":"ClickOnLineHack.js (not parsed)","value":{"__isSmartRef__":true,"id":2518}},"2744":{"isListItem":true,"string":"ColorChooserDraft.js (not parsed)","value":{"__isSmartRef__":true,"id":2519}},"2745":{"isListItem":true,"string":"Compat.js (not parsed)","value":{"__isSmartRef__":true,"id":2520}},"2746":{"isListItem":true,"string":"CompatLayer.js (not parsed)","value":{"__isSmartRef__":true,"id":2521}},"2747":{"isListItem":true,"string":"CompatSCB.js (not parsed)","value":{"__isSmartRef__":true,"id":2522}},"2748":{"isListItem":true,"string":"Complete.js (not parsed)","value":{"__isSmartRef__":true,"id":2523}},"2749":{"isListItem":true,"string":"Connectors.js (not parsed)","value":{"__isSmartRef__":true,"id":2524}},"2750":{"isListItem":true,"string":"Core.js (not parsed)","value":{"__isSmartRef__":true,"id":2525}},"2751":{"isListItem":true,"string":"EventExperiments.js (not parsed)","value":{"__isSmartRef__":true,"id":2526}},"2752":{"isListItem":true,"string":"Events.js (not parsed)","value":{"__isSmartRef__":true,"id":2527}},"2753":{"isListItem":true,"string":"Examples.js (not parsed)","value":{"__isSmartRef__":true,"id":2528}},"2754":{"isListItem":true,"string":"Experiments.js (not parsed)","value":{"__isSmartRef__":true,"id":2529}},"2755":{"isListItem":true,"string":"Graffle.js (not parsed)","value":{"__isSmartRef__":true,"id":2530}},"2756":{"isListItem":true,"string":"Halos.js (not parsed)","value":{"__isSmartRef__":true,"id":2531}},"2757":{"isListItem":true,"string":"HTML.js (not parsed)","value":{"__isSmartRef__":true,"id":2532}},"2758":{"isListItem":true,"string":"Layout.js (not parsed)","value":{"__isSmartRef__":true,"id":2533}},"2759":{"isListItem":true,"string":"MorphAddons.js (not parsed)","value":{"__isSmartRef__":true,"id":2534}},"2760":{"isListItem":true,"string":"ObjectMigration.js (not parsed)","value":{"__isSmartRef__":true,"id":2535}},"2761":{"isListItem":true,"string":"PathShapes.js (not parsed)","value":{"__isSmartRef__":true,"id":2536}},"2762":{"isListItem":true,"string":"Rendering.js (not parsed)","value":{"__isSmartRef__":true,"id":2537}},"2763":{"isListItem":true,"string":"ScriptingSupport.js (not parsed)","value":{"__isSmartRef__":true,"id":2538}},"2764":{"isListItem":true,"string":"Serialization.js (not parsed)","value":{"__isSmartRef__":true,"id":2539}},"2765":{"isListItem":true,"string":"Shapes.js (not parsed)","value":{"__isSmartRef__":true,"id":2540}},"2766":{"isListItem":true,"string":"Styles.js (not parsed)","value":{"__isSmartRef__":true,"id":2541}},"2767":{"isListItem":true,"string":"SVG.js (not parsed)","value":{"__isSmartRef__":true,"id":2542}},"2768":{"isListItem":true,"string":"Tests.js","value":{"__isSmartRef__":true,"id":2543}},"2769":{"isListItem":true,"string":"TextCore.js (not parsed)","value":{"__isSmartRef__":true,"id":2734}},"2770":{"isListItem":true,"string":"Widgets.js (not parsed)","value":{"__isSmartRef__":true,"id":2735}},"2771":{"isListItem":true,"string":"WidgetsAddOns.js (not parsed)","value":{"__isSmartRef__":true,"id":2736}},"2772":{"isListItem":true,"string":"Local code","value":{"__isSmartRef__":true,"id":2737}},"2773":{"sourceObj":{"__isSmartRef__":true,"id":2499},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setPane1Selection","converter":null,"converterString":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":2774},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":2775},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2774":{"source":{"__isSmartRef__":true,"id":2499},"target":{"__isSmartRef__":true,"id":2252}},"2775":{"updater":{"__isSmartRef__":true,"id":2776}},"2776":{"originalFunc":null,"varMapping":{"__isSmartRef__":true,"id":2774},"source":"function ($upd, v) { $upd(v, this.sourceObj) }","funcProperties":{"__isSmartRef__":true,"id":2777},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global"},"2777":{},"2778":{"sourceObj":{"__isSmartRef__":true,"id":2499},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane1Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2779},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2779":{"source":{"__isSmartRef__":true,"id":2499},"target":{"__isSmartRef__":true,"id":2252}},"2780":{"sourceObj":{"__isSmartRef__":true,"id":2499},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane1Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2781},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2781":{"source":{"__isSmartRef__":true,"id":2499},"target":{"__isSmartRef__":true,"id":2252}},"2782":{"sourceObj":{"__isSmartRef__":true,"id":2499},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane1Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2783},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2783":{"source":{"__isSmartRef__":true,"id":2499},"target":{"__isSmartRef__":true,"id":2252}},"2784":{"source":{"__isSmartRef__":true,"id":2252},"target":{"__isSmartRef__":true,"id":2499}},"2785":{"sourceObj":{"__isSmartRef__":true,"id":2252},"sourceAttrName":"setPane2Content","targetObj":{"__isSmartRef__":true,"id":2786},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2849},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2786":{"submorphs":[],"scripts":[],"id":36,"renderContextTable":{"__isSmartRef__":true,"id":2787},"shape":{"__isSmartRef__":true,"id":2788},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":2793},"_Position":{"__isSmartRef__":true,"id":2794},"itemList":[{"__isSmartRef__":true,"id":2795},{"__isSmartRef__":true,"id":2797},{"__isSmartRef__":true,"id":2799},{"__isSmartRef__":true,"id":2801},{"__isSmartRef__":true,"id":2803},{"__isSmartRef__":true,"id":2805},{"__isSmartRef__":true,"id":2807},{"__isSmartRef__":true,"id":2809},{"__isSmartRef__":true,"id":2811},{"__isSmartRef__":true,"id":2813},{"__isSmartRef__":true,"id":2815},{"__isSmartRef__":true,"id":2817},{"__isSmartRef__":true,"id":2819},{"__isSmartRef__":true,"id":2821},{"__isSmartRef__":true,"id":2823},{"__isSmartRef__":true,"id":2825},{"__isSmartRef__":true,"id":2827},{"__isSmartRef__":true,"id":2829},{"__isSmartRef__":true,"id":2831},{"__isSmartRef__":true,"id":2833},{"__isSmartRef__":true,"id":2835},{"__isSmartRef__":true,"id":2837},{"__isSmartRef__":true,"id":2839}],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2841},{"__isSmartRef__":true,"id":2843},{"__isSmartRef__":true,"id":2845},{"__isSmartRef__":true,"id":2847}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"2787":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"2788":{"_Position":{"__isSmartRef__":true,"id":2789},"renderContextTable":{"__isSmartRef__":true,"id":2790},"_Extent":{"__isSmartRef__":true,"id":2791},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":2792},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2789":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2790":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2791":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2792":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2793":{"morph":{"__isSmartRef__":true,"id":2786},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2794":{"x":205,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2795":{"isListItem":true,"string":"lively.morphic.Tests.TestCase","value":{"__isSmartRef__":true,"id":2796}},"2796":{"target":{"__isSmartRef__":true,"id":2546},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2797":{"isListItem":true,"string":"lively.morphic.Tests.WorldTests","value":{"__isSmartRef__":true,"id":2798}},"2798":{"target":{"__isSmartRef__":true,"id":2557},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2799":{"isListItem":true,"string":"lively.morphic.Tests.MorphTests","value":{"__isSmartRef__":true,"id":2800}},"2800":{"target":{"__isSmartRef__":true,"id":2561},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2801":{"isListItem":true,"string":"lively.morphic.Tests.EventTests","value":{"__isSmartRef__":true,"id":2802}},"2802":{"target":{"__isSmartRef__":true,"id":2584},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2803":{"isListItem":true,"string":"lively.morphic.Tests.CopyMorphTests","value":{"__isSmartRef__":true,"id":2804}},"2804":{"target":{"__isSmartRef__":true,"id":2590},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2805":{"isListItem":true,"string":"lively.morphic.Tests.TextMorphTests","value":{"__isSmartRef__":true,"id":2806}},"2806":{"target":{"__isSmartRef__":true,"id":2597},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2807":{"isListItem":true,"string":"lively.morphic.Tests.ScrollTests","value":{"__isSmartRef__":true,"id":2808}},"2808":{"target":{"__isSmartRef__":true,"id":2606},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2809":{"isListItem":true,"string":"lively.morphic.Tests.TextMorphRichTextTests","value":{"__isSmartRef__":true,"id":2810}},"2810":{"target":{"__isSmartRef__":true,"id":2613},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2811":{"isListItem":true,"string":"lively.morphic.Tests.RichTextTests","value":{"__isSmartRef__":true,"id":2812}},"2812":{"target":{"__isSmartRef__":true,"id":2655},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2813":{"isListItem":true,"string":"lively.morphic.Tests.ButtonMorphTests","value":{"__isSmartRef__":true,"id":2814}},"2814":{"target":{"__isSmartRef__":true,"id":2661},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2815":{"isListItem":true,"string":"lively.morphic.Tests.ListMorphTests","value":{"__isSmartRef__":true,"id":2816}},"2816":{"target":{"__isSmartRef__":true,"id":2664},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2817":{"isListItem":true,"string":"lively.morphic.Tests.AppTests","value":{"__isSmartRef__":true,"id":2818}},"2818":{"target":{"__isSmartRef__":true,"id":2674},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2819":{"isListItem":true,"string":"lively.morphic.Tests.CanvasRenderingTests","value":{"__isSmartRef__":true,"id":2820}},"2820":{"target":{"__isSmartRef__":true,"id":2678},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2821":{"isListItem":true,"string":"lively.morphic.Tests.SimilitudeTests","value":{"__isSmartRef__":true,"id":2822}},"2822":{"target":{"__isSmartRef__":true,"id":2682},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2823":{"isListItem":true,"string":"lively.morphic.Tests.ScriptTests","value":{"__isSmartRef__":true,"id":2824}},"2824":{"target":{"__isSmartRef__":true,"id":2685},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2825":{"isListItem":true,"string":"lively.morphic.Tests.SerializationTests","value":{"__isSmartRef__":true,"id":2826}},"2826":{"target":{"__isSmartRef__":true,"id":2692},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2827":{"isListItem":true,"string":"lively.morphic.Tests.HaloTests","value":{"__isSmartRef__":true,"id":2828}},"2828":{"target":{"__isSmartRef__":true,"id":2695},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2829":{"isListItem":true,"string":"lively.morphic.Tests.ImageTests","value":{"__isSmartRef__":true,"id":2830}},"2830":{"target":{"__isSmartRef__":true,"id":2701},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2831":{"isListItem":true,"string":"lively.morphic.Tests.MenuTests","value":{"__isSmartRef__":true,"id":2832}},"2832":{"target":{"__isSmartRef__":true,"id":2704},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2833":{"isListItem":true,"string":"lively.morphic.Tests.ExternalShapesTests","value":{"__isSmartRef__":true,"id":2834}},"2834":{"target":{"__isSmartRef__":true,"id":2707},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2835":{"isListItem":true,"string":"lively.morphic.Tests.LayoutTests","value":{"__isSmartRef__":true,"id":2836}},"2836":{"target":{"__isSmartRef__":true,"id":2710},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2837":{"isListItem":true,"string":"lively.morphic.Tests.SelectionTest","value":{"__isSmartRef__":true,"id":2838}},"2838":{"target":{"__isSmartRef__":true,"id":2713},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2839":{"isListItem":true,"string":"lively.morphic.Tests.LineTest","value":{"__isSmartRef__":true,"id":2840}},"2840":{"target":{"__isSmartRef__":true,"id":2719},"browser":{"__isSmartRef__":true,"id":2252},"__LivelyClassName__":"lively.ide.CategorizedClassFragmentNode","__SourceModuleName__":"Global.lively.ide.SystemBrowserNodes"},"2841":{"sourceObj":{"__isSmartRef__":true,"id":2786},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setPane2Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":2842},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2842":{"source":{"__isSmartRef__":true,"id":2786},"target":{"__isSmartRef__":true,"id":2252}},"2843":{"sourceObj":{"__isSmartRef__":true,"id":2786},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane2Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2844},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2844":{"source":{"__isSmartRef__":true,"id":2786},"target":{"__isSmartRef__":true,"id":2252}},"2845":{"sourceObj":{"__isSmartRef__":true,"id":2786},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane2Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2846},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2846":{"source":{"__isSmartRef__":true,"id":2786},"target":{"__isSmartRef__":true,"id":2252}},"2847":{"sourceObj":{"__isSmartRef__":true,"id":2786},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane2Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2848},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2848":{"source":{"__isSmartRef__":true,"id":2786},"target":{"__isSmartRef__":true,"id":2252}},"2849":{"source":{"__isSmartRef__":true,"id":2252},"target":{"__isSmartRef__":true,"id":2786}},"2850":{"sourceObj":{"__isSmartRef__":true,"id":2252},"sourceAttrName":"setPane3Content","targetObj":{"__isSmartRef__":true,"id":2851},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2868},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2851":{"submorphs":[],"scripts":[],"id":37,"renderContextTable":{"__isSmartRef__":true,"id":2852},"shape":{"__isSmartRef__":true,"id":2853},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":2858},"_Position":{"__isSmartRef__":true,"id":2859},"itemList":["-----"],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2860},{"__isSmartRef__":true,"id":2862},{"__isSmartRef__":true,"id":2864},{"__isSmartRef__":true,"id":2866}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"2852":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"2853":{"_Position":{"__isSmartRef__":true,"id":2854},"renderContextTable":{"__isSmartRef__":true,"id":2855},"_Extent":{"__isSmartRef__":true,"id":2856},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":2857},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2854":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2855":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2856":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2857":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2858":{"morph":{"__isSmartRef__":true,"id":2851},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2859":{"x":410,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2860":{"sourceObj":{"__isSmartRef__":true,"id":2851},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setPane3Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":2861},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2861":{"source":{"__isSmartRef__":true,"id":2851},"target":{"__isSmartRef__":true,"id":2252}},"2862":{"sourceObj":{"__isSmartRef__":true,"id":2851},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane3Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2863},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2863":{"source":{"__isSmartRef__":true,"id":2851},"target":{"__isSmartRef__":true,"id":2252}},"2864":{"sourceObj":{"__isSmartRef__":true,"id":2851},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane3Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2865},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2865":{"source":{"__isSmartRef__":true,"id":2851},"target":{"__isSmartRef__":true,"id":2252}},"2866":{"sourceObj":{"__isSmartRef__":true,"id":2851},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane3Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2867},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2867":{"source":{"__isSmartRef__":true,"id":2851},"target":{"__isSmartRef__":true,"id":2252}},"2868":{"source":{"__isSmartRef__":true,"id":2252},"target":{"__isSmartRef__":true,"id":2851}},"2869":{"sourceObj":{"__isSmartRef__":true,"id":2252},"sourceAttrName":"setPane4Content","targetObj":{"__isSmartRef__":true,"id":2870},"targetMethodName":"updateList","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2887},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2870":{"submorphs":[],"scripts":[],"id":38,"renderContextTable":{"__isSmartRef__":true,"id":2871},"shape":{"__isSmartRef__":true,"id":2872},"droppingEnabled":true,"halosEnabled":true,"_ClipMode":"auto","eventHandler":{"__isSmartRef__":true,"id":2877},"_Position":{"__isSmartRef__":true,"id":2878},"itemList":["-----"],"selection":null,"selectedLineNo":-1,"selectOnMove":false,"owner":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2879},{"__isSmartRef__":true,"id":2881},{"__isSmartRef__":true,"id":2883},{"__isSmartRef__":true,"id":2885}],"doNotSerialize":["$$selection"],"doNotCopyProperties":["$$selection"],"__LivelyClassName__":"lively.morphic.List","__SourceModuleName__":"Global.lively.morphic.Core"},"2871":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateListContent":"updateListContentHTML","resizeList":"resizeListHTML","getItemIndexFromEvent":"getItemIndexFromEventHTML","selectAt":"selectAtHTML","getListExtent":"getListExtentHTML","setSize":"setSizeHTML","getSelectedIndexes":"getSelectedIndexesHTML","renderAsDropDownList":"renderAsDropDownListHTML"},"2872":{"_Position":{"__isSmartRef__":true,"id":2873},"renderContextTable":{"__isSmartRef__":true,"id":2874},"_Extent":{"__isSmartRef__":true,"id":2875},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":2876},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2873":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2874":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2875":{"x":205,"y":192.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2876":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2877":{"morph":{"__isSmartRef__":true,"id":2870},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2878":{"x":615,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2879":{"sourceObj":{"__isSmartRef__":true,"id":2870},"sourceAttrName":"selection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setPane4Selection","converter":null,"converterString":null,"updater":null,"updaterString":"function ($upd, v) { $upd(v, this.sourceObj) }","varMapping":{"__isSmartRef__":true,"id":2880},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2880":{"source":{"__isSmartRef__":true,"id":2870},"target":{"__isSmartRef__":true,"id":2252}},"2881":{"sourceObj":{"__isSmartRef__":true,"id":2870},"sourceAttrName":"getSelection","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane4Selection","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2882},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2882":{"source":{"__isSmartRef__":true,"id":2870},"target":{"__isSmartRef__":true,"id":2252}},"2883":{"sourceObj":{"__isSmartRef__":true,"id":2870},"sourceAttrName":"getList","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane4Content","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2884},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2884":{"source":{"__isSmartRef__":true,"id":2870},"target":{"__isSmartRef__":true,"id":2252}},"2885":{"sourceObj":{"__isSmartRef__":true,"id":2870},"sourceAttrName":"getMenu","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"getPane4Menu","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2886},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2886":{"source":{"__isSmartRef__":true,"id":2870},"target":{"__isSmartRef__":true,"id":2252}},"2887":{"source":{"__isSmartRef__":true,"id":2252},"target":{"__isSmartRef__":true,"id":2870}},"2888":{"sourceObj":{"__isSmartRef__":true,"id":2252},"sourceAttrName":"setSourceString","targetObj":{"__isSmartRef__":true,"id":2889},"targetMethodName":"setTextString","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2905},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2889":{"submorphs":[],"scripts":[],"id":40,"renderContextTable":{"__isSmartRef__":true,"id":2890},"textChunks":[{"__isSmartRef__":true,"id":2891}],"shape":{"__isSmartRef__":true,"id":2893},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2897},"_ClipMode":"scroll","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Courier","eventHandler":{"__isSmartRef__":true,"id":2898},"_Position":{"__isSmartRef__":true,"id":2899},"priorExtent":{"__isSmartRef__":true,"id":2900},"_MaxTextWidth":820,"_MaxTextHeight":269.5,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2239},"accessibleInInactiveWindow":true,"layout":{"__isSmartRef__":true,"id":2901},"_FontSize":10,"noEval":true,"syntaxHighlightingWhileTyping":true,"attributeConnections":[{"__isSmartRef__":true,"id":2902},{"__isSmartRef__":true,"id":2903}],"doNotSerialize":["$$textString","$$savedTextString"],"doNotCopyProperties":["$$textString","$$savedTextString"],"textString":"module('lively.morphic.Tests').requires('lively.TestFramework', 'lively.morphic.Complete').toRun(function() {\n\nTestCase.subclass('lively.morphic.Tests.TestCase',\n'running', {\n tearDown: function($super) {\n $super();\n this.removeTestWorld();\n },\n},\n'helper', {\n removeTestWorld: function() {\n if (this.world) {\n this.world.remove();\n this.world = null;\n }\n if (this.oldAlert)\n Global.alert = this.oldAlert;\n if (this.existingWorld) {\n this.existingWorld.displayOnCanvas(document.getElementsByTagName('body')[0]);\n lively.morphic.World.currentWorld = this.existingWorld;\n this.existingWorld = null;\n }\n },\n openMorphsInRealWorld: function() {\n this.removeTestWorld();\n },\n createWorld: function() {\n if (this.world) return; // already created\n this.existingWorld = lively.morphic.World.current();\n this.world = lively.morphic.World.createOn(document.body, new Rectangle(0,0,300,300));\n this.oldAlert = Global.alert;\n Global.alert = function (msg) { this.existingWorld.alert(String(msg)) }.bind(this)\n },\n serializeAndDeserializeWorld: function() {\n if (!this.world) {\n alert('No test world created');\n return\n }\n var json = this.world.serializeToJSON();\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n },\n\n},\n'assertion', {\n assertNodeMatches: function(expected, node) {\n var self = this,\n fail = function fail(msg) { self.assert(false, msg) };\n if (!expected) fail('expected is null');\n if (!node) fail('node is null but should be ' + expected.tagName);\n if (expected.tagName != node.tagName) fail(expected.tagName + '!=' + node.tagName);\n if (expected.parentNode && (expected.parentNode !== node.parentNode))\n fail('parent is ' + node.parentNode + ' but should be ' + expected.parentNode);\n\n if (expected.textContent) {\n if (expected.textContent != node.textContent)\n fail('textContent ' + expected.textContent + ' != ' + node.textContent);\n }\n\n if (expected.attributes)\n Properties.forEachOwn(expected.attributes, function(key, expectedValue) {\n var actualValue = node.getAttribute(key);\n if (expectedValue instanceof RegExp) {\n if (!expectedValue.test(actualValue))\n fail('attribute ' + key + ' was ' + actualValue + ' and didn\\'t match ' + expectedValue);\n return\n }\n if (expectedValue != actualValue) {\n fail('attribute ' + key + ' not ' + expectedValue + ' but ' + actualValue);\n }\n });\n if (expected.style)\n Properties.forEachOwn(expected.style, function(key, expected) {\n var actualValue = node.style[key].replace(/ /g, '');\n if (Object.isFunction(expected)) {\n self.assert(expected.call(self, actualValue), 'value ' + actualValue + ' did no match')\n return\n }\n if (expected != actualValue)\n fail('style ' + key + ' not ' + expected + ' but ' + actualValue);\n });\n if (expected.childNodeLength)\n this.assertEquals(expected.childNodeLength, node.childNodes.length, 'childNode.length of ' + node)\n if (expected.childNodes)\n for (var i = 0; i < expected.childNodes.length; i++)\n this.assertNodeMatches(expected.childNodes[i], node.childNodes[i]);\n },\n});\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.WorldTests',\n'testing', {\n testAddWorldToDoc: function() {\n var canvasNode = document.body, bounds = new Rectangle(0, 0, 100, 100),\n world = new lively.morphic.World();\n try {\n world.setBounds(bounds);\n world.displayOnCanvas(canvasNode);\n\n var expected = {tagName: 'div', parentNode: canvasNode, childNodes: [{tagName: 'div'}]};\n this.assertNodeMatches(expected, world.renderContext().getMorphNode());\n } finally {\n world.remove();\n }\n },\n});\n\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.MorphTests',\n'running', {\n setUp: function($super) {\n $super();\n this.createWorld();\n },\n},\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n this.assert(this.world.submorphs.include(m), 'not in submorphs');\n this.assertIdentity(this.world, m.owner, 'owner');\n\n var expected = {\n tagName: 'div', // world morph\n childNodes: [\n {tagName: 'div'}, // world shape\n {tagName: 'div', childNodes: [{tagName: 'div'}]} // m and its shape\n ]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02aUseSVGRenderer: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext());\n\n var expected = {\n tagName: 'div', // world\n childNodes: [\n {tagName: 'div'}, // world's shape\n {tagName: 'div'}, // hand\n {tagName: 'svg', // submorph\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'rect'}]}]}]};\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n test03MorphWithSVGEllipse: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setShape(new lively.morphic.Shapes.Ellipse(new Rectangle(0,0, 30, 30)));\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'svg',\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'ellipse'}]}]}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test04MorphLocalize: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph2.setPosition(pt(10,10));\n this.assertEquals(pt(0,0), morph2.localize(pt(10,10)));\n },\n test04AddMorphBefore: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph(),\n morph3 = new lively.morphic.Morph();\n // Colors to identify the morphs are in correct order\n morph1.setFill(Color.green);\n morph2.setFill(Color.blue);\n morph3.setFill(Color.yellow);\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n this.world.addMorph(morph3, morph2);\n\n morph1.setExtent(pt(200, 200))\n morph2.setExtent(pt(100, 150))\n morph3.setExtent(pt(150, 100))\n\n // order back to front: morph1, morph3, morph2 \n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph1.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph3.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph2.getFill().toString()}}]},\n {tagName: 'div'}, // hand\n ]}\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n\n testMorphBounds: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph1.setBounds(new Rectangle(100, 100, 40, 40));\n morph2.setBounds(new Rectangle(20, 10, 40, 40));\n this.assertEquals(new Rectangle(100, 100, 60, 50), morph1.getBounds());\n },\n test07MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n shape = new lively.morphic.Shapes.Rectangle(bounds);\n this.assertEquals(bounds, shape.getBounds(), 'shape bounds');\n var morph = new lively.morphic.Morph(shape);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n test08aCreateMorphWithLinearGradient: function() {\n var morph = new lively.morphic.Morph();\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.LinearGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], \"northSouth\"));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(linear,0%0%,0%100%,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test08bCreateMorphWithradialGradient: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.RadialGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], pt(0.5,0.3)));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(radial,50%30%,0,50%50%,25,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test09BorderColorAndWidth: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderColor(Color.green);\n morph.setBorderWidth(2.5);\n morph.setStrokeOpacity(0.5);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {\n // FIXME float conversion in style makes it hard to test directly\n 'border': function(result) { // \"2.5px solid rgba(0,204,0,0.5)\"\n return result.include('2.5px') && result.include('solid') && result.include('rgba(0,204')\n }\n }\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test10BorderRadiusHTML: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderRadius(3);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: { 'border-top-left-radius': '3px3px'}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test12ModifyOrigin: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setOrigin(pt(50, 10));\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test13ModifyOriginWithTransformation: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setRotation((90).toRadians()); // apply some transformation\n morph.setOrigin(pt(50, 10)); // coordinates local to morph\n this.assertMatches(rect(pt(-20, 0), pt(0, 100)).toString(), morph.bounds().toString(), 'setOrigin wrong')\n \n morph.setRotation(0);\n\n this.assertEquals(pt(-60, 40).extent(pt(100,20)), morph.bounds());\n },\n test14ModifyOriginWithScale: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 50, 10);\n this.world.addMorph(morph);\n\n morph.setScale(2)\n morph.setOrigin(pt(25, 5)); // set origin is in local shape coordinates\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test15ModifyOriginWithSubmorphs: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n var submorph = lively.morphic.Morph.makeRectangle(0, 0, 10, 10); \n morph.addMorph(submorph)\n submorph.setPosition(pt(30,30))\n\n\n morph.setOrigin(pt(20, 20));\n\n this.assertEquals(pt(10,10), submorph.getPosition(), \"submorph pos did not adjust\");\n },\n\n test16MorphsContainingPoint: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(20, 20, 30, 30), \n subsubmorph = lively.morphic.Morph.makeRectangle(25, 25, 5, 5),\n morph2 = lively.morphic.Morph.makeRectangle(48, 48, 100, 100);\n this.world.addMorph(morph)\n morph.addMorph(submorph)\n submorph.addMorph(subsubmorph)\n this.world.addMorph(morph2)\n\n var result, expected;\n\n result = morph.morphsContainingPoint(pt(-1,-1));\n this.assertEquals(0, result.length, 'for ' + pt(-1,-1));\n\n result = morph.morphsContainingPoint(pt(1,1));\n this.assertEquals(1, result.length, 'for ' + pt(1,1));\n this.assertEquals(morph, result[0], 'for ' + pt(1,1));\n\n result = morph.morphsContainingPoint(pt(40,40));\n this.assertEquals(2, result.length, 'for ' + pt(40,40));\n this.assertEquals(submorph, result[0]);\n this.assertEquals(morph, result[1]);\n\n result = morph.morphsContainingPoint(pt(45,45));\n this.assertEquals(3, result.length, 'for ' + pt(45,45));\n this.assertEquals(subsubmorph, result[0]);\n this.assertEquals(submorph, result[1]);\n this.assertEquals(morph, result[2]);\n\n result = this.world.morphsContainingPoint(pt(48,48));\n this.assertEquals(5, result.length, 'for ' + pt(48,48));\n this.assertEquals(morph2, result[0]);\n this.assertEquals(subsubmorph, result[1]);\n this.assertEquals(submorph, result[2]);\n this.assertEquals(morph, result[3]);\n this.assertEquals(this.world, result[4]);\n },\n test17MorphsContainingPointWithAddMorphFront: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n var result = this.world.morphsContainingPoint(pt(1,1));\nthis. openMorphsInRealWorld()\n// inspect(result)\n this.assertEquals(3, result.length);\n // this.assertEquals(this.world.firstHand(), result[0], 'for ' + pt(1,1));\n\n this.assertEquals(morph1, result[0], 'for ' + pt(1,1));\n this.assertEquals(morph2, result[1], 'for ' + pt(1,1));\n },\n test18OrderOfMorphsOnScrennAndInSubmorphArrayMatches: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n this.assertIdentity(this.world.submorphs[0], morph2, 'morph2 not @0')\n this.assertIdentity(this.world.submorphs[1], morph1, 'morph1 not @1')\n },\n test19MorphsContainingPointDosNotIncludeOffsetedOwner: function() {\n var owner = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(110, 10, 90, 90), \n other = lively.morphic.Morph.makeRectangle(100, 0, 100, 100);\n\n owner.name = 'owner'; submorph.name = 'submorph'; other.name = 'other';\n this.world.addMorph(owner)\n owner.addMorph(submorph)\n this.world.addMorphBack(other)\n\n var result = this.world.morphsContainingPoint(pt(150,50));\n this.assertEquals(3, result.length, 'for ' + pt(150,50));\n this.assertEquals(this.world, result[2], 'for 2');\n this.assertEquals(other, result[1], 'for 1');\n this.assertEquals(submorph, result[0], 'for 0');\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.EventTests',\n'testing', {\n xtest05DropMorph: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n // this.world.addHandMorph();\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n morph1.setBounds(new Rectangle(0,0, 100, 100));\n morph2.setBounds(new Rectangle(0,0, 80, 80));\n morph1.applyStyle({fill: Color.red});\n morph2.applyStyle({fill: Color.green});\n\n // is already done by style settings\n // this.world.enableDropping();\n // morph1.enableDropping();\n // morph1.enableGrabbing();\n // morph2.enableDropping();\n // morph2.enableGrabbing();\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morph2.renderContext().getMorphNode(), button: 0});\n\n this.assert(this.world.firstHand().submorphs.include(morph2), 'morph not grabbed');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(20,20), target: this.world.renderContext().getMorphNode()});\n\n this.assert(morph1.submorphs.include(morph2), 'morph not dropped on morph2'); \n },\n test01DragMorph: function() {\n var dragStarted = false,\n dragMoved = false,\n dragEnded = false,\n morph = new lively.morphic.Morph(),\n morphNode = morph.renderContext().getMorphNode();\n this.world.addMorph(morph);\n morph.setBounds(new Rectangle(0,0, 100, 100));\n morph.applyStyle({fill: Color.red, enableDragging: true});\n\n morph.onDragStart = function() { dragStarted = true }\n morph.onDrag = function() { dragMoved = true }\n morph.onDragEnd = function() { dragEnded = true }\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morphNode, button: 0});\n this.assert(!dragStarted, 'drag already started after mousedown');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(25,25), target: morphNode, button: 0});\n this.assert(dragStarted, 'drag not started after mousedown and mousemove');\n this.assert(!dragMoved, 'drag already moved at dragStart');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragMoved, 'drag not moved after mousemove');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragEnded, 'dragEnd not called');\n },\n test02RelayMouseEventsToMorphBeneath: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,100,100),\n morph2 = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n\n morph2.relayMouseEventsToMorphBeneath();\n\n lively.morphic.EventSimulator.doMouseEvent(\n {type: 'mousedown', pos: pt(20,20), target: morph2, button: 0});\n this.assertIdentity(morph1, this.world.clickedOnMorph);\n },\n\n});\n \nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CopyMorphTests',\n'testing', {\n test01CopySimpleMorph: function() {\n var m = new lively.morphic.Morph()\n m.setBounds(new Rectangle(100, 100, 40, 40));\n var m2 = m.copy();\n this.assert(m !== m2, 'copied morph is identical to original morph')\n this.assertEquals(new Rectangle(100, 100, 40, 40), m2.getBounds());\n },\n test02ReferencedMorphThatIsNotASubmorphIsNotCopied: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.addMorph(m2)\n m1.other = m3;\n var copy = m1.copy();\n this.assert(copy !== m1, 'copied morph is identical to original morph');\n this.assert(copy.submorphs[0] instanceof lively.morphic.Morph, 'submorph not copied');\n this.assert(copy.submorphs[0] !== m2, 'copied submorph is identical to original submorph');\n this.assert(copy.other === m3, 'referenced morph that is not a submorph is not identical')\n },\n test03OwnerIsNotCopied: function() {\n var m = new lively.morphic.Morph();\n this.world.addMorph(m);\n var copy = m.copy();\n this.assert(!copy.owner, 'owner was copied');\n },\n test04CopyMorphTreeWithEventHandlers: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.enableGrabbing();\n m2.enableGrabbing();\n m3.enableGrabbing();\n m1.addMorph(m2)\n m2.addMorph(m3)\n this.world.addMorph(m1);\n var copy = m1.copy();\n this.world.addMorph(copy);\n this.assertEquals(2+1, this.world.submorphs.length); // +1 for hand\n this.assertEquals(1, copy.submorphs.length);\n this.assertEquals(1, copy.submorphs[0].submorphs.length);\n },\n test05CopySetsNewTargetForScripts: function() {\n var m1 = new lively.morphic.Morph();\n m1.startStepping(20, 'rotateBy', 0.1);\n var copy = m1.copy();\n\n this.assertIdentity(m1, m1.scripts[0].target, 'original target changed');\n this.assertIdentity(copy, copy.scripts[0].target, 'copy target changed');\n },\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphTests',\n'testing', {\n test01TextMorphHTML: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.setTextString('Foo');\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div', childNodes: [ // shape\n {tagName: 'div', textContent: 'Foo'}] // text node\n }, \n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test02TextMorphSVG: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setTextString('Foo');\n var expected = {\n tagName: 'g',\n childNodes: [\n {tagName: 'rect'}, // shape\n {tagName: 'text', textContent: 'Foo'} // text node\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test03TextStringIsConnectable: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n var resultObj = {result: null};\n connect(m, 'textString', resultObj, 'result');\n m.setTextString('Foo');\n this.assertEquals('Foo', resultObj.result);\n },\n test04GrowToFit: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 10, 20));\n this.world.addMorph(m);\n m.setTextString('a really long string longer than 10px')\n m.applyStyle({fixedWidth: false});\n this.assert(m.getExtent().x > 10, 'did not grow to fit text ' + m.bounds().width);\n },\n\n test05SetSelectionRange: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(0,1);\n this.assertEquals('1', m.selectionString());\n m.setSelectionRange(0,3);\n this.assertEquals('123', m.selectionString());\n m.setSelectionRange(-99,m.textString.length+10);\n this.assertEquals('123\\t567\\n9', m.selectionString());\n },\n test05bSetSelectionRangeRightToLeft: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(3, 0);\n this.assertEquals('123', m.selectionString());\n this.assertEqualState([3,0], m.getSelectionRange());\n },\n\n test06ModifySelectedLinesInsertsAtCorrectPosition: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('This\\nis\\na\\ntest');\n m.setSelectionRange(0,9);\n this.assertEquals('This\\nis\\na', m.selectionString())\n m.modifySelectedLines(function(ea) { return '+' + ea });\n this.assertEquals('+This\\n+is\\n+a\\ntest', m.textString);\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ScrollTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 60, 200));\n this.world.addMorph(this.text);\n this.text.applyStyle({clipMode: 'scroll', fixedHeight: true})\n\n // 10x test, 9x \\n\\n\\n\n var str = Array.range(1,10).collect(function(i) { return 'test'+i }).join('\\n\\n\\n')\n this.text.setTextString(str);\n },\n},\n'testing', {\n\n test01ScrollSelectionAtBottomIntoView: function() {\n var m = this.text;\n\n // scroll down to be in scroll bounds\n m.setScroll(0, 0) // scroll to top\n m.setSelectionRange(m.textString.length-6,m.textString.length) // select\"test10\"\n m.scrollSelectionIntoView()\n this.assertMatches([0, 321], m.getScroll(), 'does not scroll down');\n\n // scroll up to be in scroll bounds\n m.setSelectionRange(0,5) // select \"test1\"\n\n m.scrollSelectionIntoView()\n this.assertMatches([0,2], m.getScroll(), 'does not scroll up');\n },\n test02ScrollWorld: function() {\n this.world.setExtent(pt(10000, 10000));\n this.world.setScroll(0, 0);\n this.world.setScroll(0, 10);\n this.world.setScroll(0, 10)\n\n this.assertMatches([0,10], this.world.getScroll())\n },\n\n\n});\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphRichTextTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // cop.withLayers([TextDevLayer], function() {\n // return new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // })\n // this.text.setWithLayers([TextDevLayer]);\n this.world.addMorph(this.text);\n },\n checkRunArray: function(expectedRunArray) {\n this.assertMatches(expectedRunArray.asArray(), this.text.textStyle.asArray());\n },\n checkChunks: function(expectedChunks) {\n this.assertMatches(expectedChunks, this.text.getTextChunks());\n },\n\n checkDOM: function(expectedTextNodes) {\n // check what was actually rendered\n var expected = {\n tagName: 'div',\n childNodeLength: expectedTextNodes.length,\n childNodes: expectedTextNodes\n };\n this.assertNodeMatches(expected, this.text.renderContext().textNode);\n },\n\n\n},\n'testing', {\n test01MorphHasTextChunk: function() {\n// this. openMorphsInRealWorld()\n// inspect(this.text)\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('', chunks[0].textString);\n chunks[0].textString = 'foo';\n this.assertEquals('foo', this.text.textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test02MorphHasTextChunkWhenTextStringIsSet: function() {\n this.text.textString = 'foo'\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('foo', chunks[0].textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test03SplitAndJoinTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n var after = chunk.splitAfter(3);\n this.assertEquals('test', after.textString, 'after string');\n this.assertEquals('ein', chunk.textString, 'chunk string');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n\n chunk.joinWithNext();\n this.assertEquals('eintest', chunk.textString);\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}]);\n\n var before = chunk.splitBefore(3);\n this.assertEquals('ein', before.textString, 'before string');\n this.assertEquals(2, this.text.getTextChunks().length);\n },\n test03bCoalesceChunks: function() {\n this.text.setTextString('test');\n this.text.firstTextChunk().splitAfter(2);\n this.text.coalesceChunks()\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test03cSplitAtFrontAndBack: function() {\n this.text.setTextString('a');\n var after = this.text.firstTextChunk().splitAfter(1);\n this.assertEquals('', after.textString, 'splitAfter');\n var before = this.text.firstTextChunk().splitBefore(0);\n this.assertEquals('', before.textString, 'splitBefore');\n this.assertEquals(3, this.text.getTextChunks().length);\n },\n test03cSplittedChunkGetsStyle: function() {\n this.text.setTextString('abcdef');\n var chunk = this.text.firstTextChunk();\n chunk.style.setFontWeight('bold');\n var after = this.text.firstTextChunk().splitAfter(3);\n this.assertEquals('bold', after.style.getFontWeight());\n },\n\n\n\n test04SliceTextChunksSimple: function() {\n this.text.setTextString('eintest');\n var sliced = this.text.sliceTextChunks(0,3);\n this.assertEquals(1, sliced.length, 'sliced not oke');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n },\n\n test04SliceTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n chunk.splitAfter(3);\n var sliced = this.text.sliceTextChunks(2,6);\n this.assertEquals(4, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ei'},\n {tagName: 'span', textContent: 'n'},\n {tagName: 'span', textContent: 'tes'},\n {tagName: 'span', textContent: 't'}])\n },\n test04SliceTextChunksAgain: function() {\n this.text.setTextString('abc');\ndebugger\n var sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'first');\n sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'second');\n },\n\n test05StyleChunk: function() {\n this.text.setTextString('test');\n var chunk = this.text.firstTextChunk();\n chunk.styleText({fontWeight: 'bold'});\n this.checkDOM([{tagName: 'span', style: {fontWeight: 'bold'}}]);\n },\n test06MakeTextBold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n test07MakeTextBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 2);\n this.text.emphasize({fontWeight: 'normal'}, 0, 2);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test08ToggleBoldnessComplete: function() {\n this.text.setTextString('eintest');\n this.text.toggleBoldness(1, 6);\n this.checkDOM([\n {tagName: 'span', textContent: 'e'},\n {tagName: 'span', textContent: 'intes'},\n {tagName: 'span', textContent: 't'}])\n this.text.toggleBoldness(1, 6);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test09ChunksAreSerializable: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.text.name = 'testText';\n this.serializeAndDeserializeWorld();\n this.text = this.world.get('testText');\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n\n },\n test10ConvertSelectionRangeForEmphasis: function() {\n // the indexes used by text selection are currently different\n // to those used for emphasizing the text\n var testValues = [\n {sel: [0,0], emph: [0,0]},\n {sel: [0,7], emph: [0,7]},\n {sel: [1,1], emph: [1,1]},\n {sel: [2,0], emph: [0,2]},\n {sel: [8,0], emph: [0, 8]},\n {sel: [4,7], emph: [4,7]}];\n testValues.forEach(function(selAndEmph) {\n this.assertEqualState(\n selAndEmph.emph,\n this.text.convertSelectionRangeForEmphasis(selAndEmph.sel),\n 'sel conversion of ' + selAndEmph.sel);\n }, this)\n },\n test11ToggleBoldnessWithChunkWithMultipleTextNodes: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n this.text.insertAtCursor('foo');\n this.assertEqual('einfootest', this.text.textString, 'insert')\n this.checkDOM([\n {tagName: 'span', textContent: 'einfootest', childNodes: [\n {tagName: undefined, textContent: 'ein'},\n {tagName: undefined, textContent: 'foo'},\n {tagName: undefined, textContent: 'test'}\n ]},\n ])\n\n this.text.toggleBoldness(1, 9);\n this.checkDOM([\n {tagName: 'span', textContent: 'e', childNodes: [{textContent: 'e'}]},\n {tagName: 'span', textContent: 'infootes', childNodes: [{textContent: 'infootes'}]},\n {tagName: 'span', textContent: 't', childNodes: [{textContent: 't'}]},\n ])\n },\n test11FixChunksShouldKeepSlection: function() {\n this.text.setTextString('eintest');\n // add a text outside of chunks manually\n this.text.renderContext().textNode.appendChild(document.createTextNode('test'))\n this.text.setSelectionRange(2,5)\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest', childNodes: [\n {tagName: undefined, textContent: 'eintesttest'},\n ]},\n ])\n var range = this.text.getSelectionRange()\n this.assert(range, 'no selection range after fixChunks!')\n this.assertMatches([2, 5], range) // Inconsistency with selection ranges?\n },\n test12GetAndSetSelectionRangeHaveEqualValues: function() {\n this.text.setTextString('eintest');\n this.text.setSelectionRange(1, 6)\n this.assertEquals('intes', this.text.selectionString());\n this.assertMatches([1,6], this.text.getSelectionRange());\n },\n test13InsertedTextBetweenChunksIsAssimilated: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n\n var chunks = this.text.getTextChunks();\n this.assertEqual(2, chunks.length, 'test preparation: chunks not OK')\n\n var newNode = XHTMLNS.create('b')\n newNode.textContent = 'foo';\n\n this.text.renderContext().textNode.insertBefore(newNode, chunks[1].getChunkNode());\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abcfoo'},\n {tagName: 'span', textContent: 'def'},\n ])\n },\n test14GetEmphasisAt: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 1, 3);\n\n var emph, expected = ['normal', 'bold', 'bold', 'normal']\n expected.forEach(function(expectedFontWeight, i) {\n var emph = this.text.getEmphasisAt(i)\n this.assertEquals(expectedFontWeight, emph.getFontWeight(), i);\n },this)\n },\n\n test15GetChunkAndLocalIndex: function() {\n this.text.setTextString('abcdef');\n this.text.sliceTextChunks(1,3);\n this.checkDOM([\n {tagName: 'span', textContent: 'a'},\n {tagName: 'span', textContent: 'bc'},\n {tagName: 'span', textContent: 'def'},\n ]);\n\n var chunks = this.text.getTextChunks(), result;\n \n result = this.text.getChunkAndLocalIndex(0);\n this.assertEquals(chunks[0], result[0]); // test for chunk\n this.assertEquals(0, result[1]); // test for local index\n\n result = this.text.getChunkAndLocalIndex(1); // if chunks ends at idx we extend it\n this.assertEquals(chunks[0], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(2);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(1, true);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(0, result[1])\n },\n test16AddLink: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({uri: 'http://foo.com'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein', style: {uri: 'http://foo.com'}}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {textDecoration: 'underline'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test17AddLinkMakeBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n\n this.text.emphasize({uri: 'test'}, 3, 7)\n this.text.emphasize({fontWeight: 'bold'}, 0, 4)\n this.text.emphasize({fontWeight: 'normal'}, 0, 4)\n\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test', style: {textDecoration: 'underline'}}])\n },\n test18LinkifiedChunkShouldKeepLinkWhenTextStringChanges: function() {\n this.text.setTextString('foo');\n this.text.emphasize({uri: 'test'}, 0, 3);\n\n this.text.firstTextChunk().textString = 'bar'\n\n this.checkChunks([{textString: 'bar', style: {uri: 'test'}}])\n\n this.checkDOM([{\n tagName: 'span',\n textContent: 'bar',\n style: {textDecoration: 'underline'}\n }])\n },\n test19FixChunksShouldRemoveElements: function() {\n this.text.setTextString('eintest');\n\n // this happens when pasting rich text on windows, for now remove RT attributes\n var elem = XHTMLNS.create('a');\n elem.href = 'http://foo.com';\n elem.textContent = 'test';\n\n this.text.firstTextChunk().getChunkNode().appendChild(elem);\n\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest',\n // childNodes: [{tagName: undefined, textContent: 'eintesttest'}]\n },\n ])\n },\n test20HandleSplittedSpanNodes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('ac');\n\n var span = XHTMLNS.create('span');\n span.textContent = 'a';\n textNode.insertBefore(span, this.text.firstTextChunk().getChunkNode());\n\n var text = NodeFactory.createText('b');\n textNode.insertBefore(text, this.text.firstTextChunk().getChunkNode());\n\n this.text.firstTextChunk().textString = 'c';\n\n this.text.fixChunks();\n\n this.checkDOM([{tagName: 'span', textContent: 'abc'}]);\n },\n test21HandleSplittedSpanNodesAndTextAttributes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('abc');\n\n this.text.emphasize({fontWeight: 'bold'}, 1,3);\n var chunks = this.text.getTextChunks();\n\n var span = XHTMLNS.create('span');\n span.textContent = 'b';\n textNode.insertBefore(span, chunks.last().getChunkNode());\n // abbc\n\n var text = NodeFactory.createText('x');\n textNode.insertBefore(text, chunks.last().getChunkNode());\n // abxbc\n\n chunks.last().textString = 'c';\n // abxc\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abx'},\n {tagName: 'span', textContent: 'c', style: {fontWeight: 'bold'}}]);\n },\n test22ReclaimRemovedSpanNodesOnPaste: function() {\n // this happens when pasting normal text on Mac OS after a chunk\n // the span node of the chunk that is pasted into is removed and the chunkNode\n // has no parent anymore. The abandoned chunkNode should reclaim its old text + the isnerted\n\n // add new content\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\n\\nbar\\n\\nbaz');\n\n this.text.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.emphasize({fontWeight: 'bold'}, 10,13);\n var chunks = this.text.getTextChunks();\n\n // remove middle chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var text = NodeFactory.createText('\\n\\nbar zurp\\n\\n');\n textNode.insertBefore(text, chunks[2].getChunkNode());\n\n this.assertEquals('foo\\n\\nbar zurp\\n\\nbaz',textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: '\\n\\nbar zurp\\n\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'baz', style: {fontWeight: 'bold'}}]);\n\n },\n test23ReclaimRemovedChunkNodeAndReapplyTextAttributes: function() {\n // this happens when pasting normal text on Mac OS in attributed text (e.g. bold)\n // Chrome tries to complete render the span itself, e.g. using \n // the chunkNode is removed but the chunk still exists\n // this tests if the chunk can reclaim the text and set it's attributes again\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\nbar');\n\n this.text.emphasize({fontWeight: 'bold'}, 4,7);\n var chunks = this.text.getTextChunks();\n\n // remove last chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var b = XHTMLNS.create('b');\n b.textContent = 'morebar'\n textNode.appendChild(b);\n\n this.assertEquals('foo\\nmorebar', textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'morebar', style: {fontWeight: 'bold'}}]);\n }, \n\n test22EmphasizeRegex: function() {\n this.text.setTextString(\"a1b2c\");\n this.text.emphasizeRegex(/[0-9]/g, {color: Color.red});\n this.checkChunks([\n {textString: 'a', style: {color: null}},\n {textString: '1', style: {color: Color.red}},\n {textString: 'b', style: {color: null}},\n {textString: '2', style: {color: Color.red}},\n {textString: 'c', style: {color: null}},\n ])\n },\n richTextPasteData: 'ein test',\n\n test23aRichTextPaste: function() {\n var pastedText = this.richTextPasteData,\n rt = lively.morphic.HTMLParser.pastedHTMLToRichText(pastedText);\n this.assertEquals(2, rt.textChunks.length);\n this.assertEquals('ein ', rt.textChunks[0].textString);\n this.assertEquals('test', rt.textChunks[1].textString);\n this.assertEquals('normal', rt.textChunks[0].style.getFontWeight());\n this.assertEquals('bold', rt.textChunks[1].style.getFontWeight());\n \n },\n test24aInsertTextChunks: function() {\n this.text.setTextString('ein');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('test')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n test24bInsertTextChunks: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('foo')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'foo'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n\n test25SlicingTextChunksWithRangeWithLengthZero: function() {\n this.text.setTextString('ein');\n var newChunk = this.text.sliceTextChunks(3,3);\n this.assertEquals(2, this.text.textChunks.length)\n this.assertIdentity(newChunk[0], this.text.textChunks.last())\n },\n\n\n\n});\nlively.morphic.Tests.TextMorphRichTextTests.subclass('lively.morphic.Tests.RichTextTests',\n'testing', {\n test01CreateRichText: function() {\n var rt = new lively.morphic.RichText('test');\n this.text.setRichText(rt);\n this.assertEqual('test', this.text.textString)\n },\n test02GetRichText: function() {\n this.text.textString = 'test';\n var rt = this.text.getRichText();\n this.assertEqual('test', rt.textString)\n },\n test03EmphasizeRichText: function() {\n var rt = new lively.morphic.RichText('eintest');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.assertEquals(2, rt.textChunks.length, 'chunks not created in rich text')\n this.text.setRichText(rt);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test04InsertInText: function() {\n var rt = new lively.morphic.RichText('foo');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.setTextString('einxtest');\n this.text.setSelectionRange(3,4);\n rt.replaceSelectionInMorph(this.text)\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'foo'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ButtonMorphTests',\n'testing', {\n test01MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n morph = new lively.morphic.Button(bounds);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ListMorphTests',\n'testing', {\n test01SetAndRetrieveStringItems: function() {\n var list = new lively.morphic.List(new Rectangle(0, 0, 100, 100), ['1', '2', '3']);\n this.assertEqualState(['1', '2', '3'], list.itemList);\n list.updateList(['foo']);\n this.assertEqualState(['foo'], list.itemList);\n },\n test02SelectAt: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['first']);\n this.world.addMorph(morph);\n morph.selectAt(0);\n\n this.assertEquals('first', morph.selection);\n // var morphNode = morph.renderContext().getMorphNode();\n // this.doMouseEvent({type: 'mousedown', pos: pt(10,8), target: morphNode, button: 0});\n },\n test03SelectListItem: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(morph);\n morph.updateList([\n {isListItem: true, string: 'foo', value: 23},\n {isListItem: true, string: 'bar', value: 24}])\n morph.selectAt(1);\n this.assertEquals(24, morph.selection);\n },\n\n test04ListMorphBoundsOnCreationInHTML: function() {\n var owner = lively.morphic.Morph.makeRectangle(0,0,10,10),\n list = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['1', '2', '3']);\n\n owner.addMorph(list)\n this.world.addMorph(owner);\n\n // FIXME depends on HTML\n this.assert(list.renderContext().listNode.clientHeight > 0, 'list node height is wrong')\n },\n test05ListMorphKeepsSelectionHighlightOnUpdateList: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(list);\n\n list.updateList([1,2,3]);\n list.setSelection(2);\n list.updateList([1,2,3]);\n\n var expected = {\n tagName: 'option',\n // attributes: {selected: true} // for some reason this does not work..\n };\n this.assertNodeMatches(expected, list.renderContext().subNodes[1]);\n this.assert(list.renderContext().subNodes[1].selected, 'not selected');\n },\n test06SetSelectionWithListItems: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [{isListItem: true, string: 'foo', value: 23}];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(23);\n\n this.assertEquals(0, list.selectedLineNo);\n },\n testAddMorphDuplicatesListsBug: function() {\n var list = new lively.morphic.List(new Rectangle(0,0,100,100), [1,2,3]),\n rect = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(list);\n this.world.addMorph(rect);\n rect.addMorph(list);\n\n this.assert(!this.world.submorphs.include(list), 'list in world submorphs')\n this.assert(rect.submorphs.include(list), 'list not in rect submorphs')\n },\n testUpdateListOnSelectionHighlightsSelectionCorrectly: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [1, 2, 3];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(2);\n this.assertEquals(1, list.selectedLineNo);\n\n connect(list, 'selection', list, 'onSelect')\n list.addScript(function onSelect(sel) { this.updateList(this.getList()) });\n\n list.setSelection(3);\n this.assertEquals(2, list.selectedLineNo);\n // FIXME implementation & HTML specific\n var isSelected = list.renderContext().subNodes[2].selected;\n this.assert(isSelected !== '', 'highlight wrong')\n },\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.AppTests',\n'testing', {\n test01ConfirmDialog: function() {\n var answer = false,\n dialog = this.world.confirm('Foo?', function(bool) { answer = bool });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'no button does not work')\n dialog.okButton.simulateButtonClick();\n this.assert(answer, 'yes button does not work')\n },\n test02PromptDialog: function() {\n var answer = 'nothing',\n dialog = this.world.prompt('Foo?', function(input) { answer = input });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'cancel button does not work')\n dialog.inputText.setTextString('test input')\n dialog.okButton.simulateButtonClick();\n this.assertEquals('test input', answer, 'ok button does not work')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CanvasRenderingTests',\n'testing', {\n test01UseCanvasRendererForSimpleMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.Canvas.RenderContext())\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02MorphAndSubmorphWithCanvas: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph()\n this.world.addMorph(m1);\n m1.renderUsing(new lively.morphic.Canvas.RenderContext())\n m1.addMorph(m2);\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}],\n };\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n});\nTestCase.subclass('lively.morphic.Tests.SimilitudeTests',\n'testing', {\n test01PointTransform: function() {\n var globalPoint = pt(20,10),\n globalTransform = new lively.morphic.Similitude(pt(0,0), 0, pt(1,1)),\n localTransform = new lively.morphic.Similitude(pt(5,10), 0, pt(1,1)),\n globalizedInvertedLocal = localTransform.preConcatenate(globalTransform).createInverse(),\n matrix = globalTransform.preConcatenate(globalizedInvertedLocal);\n this.assertEquals(pt(15, 0), globalPoint.matrixTransform(matrix))\n },\n});\nAsyncTestCase.subclass('lively.morphic.Tests.ScriptTests',\n'testing', {\n test01StartAndStopTicking: function() {\n var n = 0, script = new lively.morphic.FunctionScript(function() { script.stop(); n++; });\n script.startTicking(10);\n this.delay(function() {\n this.assertEquals(1, n, 'Script not run once');\n this.done();\n }, 40);\n },\n test02SuspendAndContinue: function() {\n var n = 0,\n script = lively.morphic.Script.forFunction(function() { n++; });\n script.startTicking(10);\n this.delay(function() { this.assertEquals(1, n, 'Script not run once'); script.suspend() }, 15);\n this.delay(function() { this.assertEquals(1, n, 'Script not suspended'); script.resume() }, 25);\n this.delay(function() {\n script.stop();\n this.assertEquals(2, n, 'Script not continued');\n this.done();\n }, 40);\n },\n test03MorphStartStepping: function() {\n var m = new lively.morphic.Morph(),\n arg = {callCount: 0};\n m.someFunction = function(arg) { arg.callCount++ };\n\n m.startStepping(10, 'someFunction', arg);\n this.delay(function() {\n m.remove();\n this.assertEquals(1, arg.callCount, 'someFunction not run once');\n }, 15);\n this.delay(function() {\n this.assertEquals(1, arg.callCount, 'arg call count changed although morph was removed');\n this.done();\n }, 30);\n },\n test04ScriptEquals: function() {\n var cb = function() { return 23 },\n script1 = new lively.morphic.FunctionScript(cb);\n script2 = new lively.morphic.FunctionScript(cb);\n this.assert(script1.equals(script1), 'identity not working');\n this.assert(script1.equals(script2), 'FunctionScript equals');\n\n script1 = new lively.morphic.TargetScript(this, 'foo', 33);\n script2 = new lively.morphic.TargetScript(this, 'foo', 44);\n this.assert(script1.equals(script1), 'identity not working Target');\n this.assert(script1.equals(script2), 'TargetScript equals');\n\n this.done()\n },\n test05StartSteppingChecksIfScriptIsThere: function() {\n var m = new lively.morphic.Morph();\n m.someFunction = function(arg) { return 33 };\n\n m.startStepping(10, 'someFunction');\n m.startStepping(20, 'someFunction');\n\n this.assertEquals(1, m.scripts.length, 'script added twice');\n this.assertEquals(20, m.scripts[0].tickTime, 'tickTime not OK');\n \n this.done();\n },\n\n\n\n\n\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.SerializationTests',\n'testing', {\n test01SerializeSimpleWorld: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n this.world.addMorph(m1);\n m1.setName('SomeMorph');\n var json = lively.persistence.Serializer.serialize(this.world)\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n this.assertEquals(2, this.world.submorphs.length) // m1 and hand;\n this.assert(this.world.get('SomeMorph'), 'does not find morph with name from m1');\n this.assert(m1 !== this.world.submorphs[1], 'morphs are identical!!!');\n },\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.HaloTests',\n'testing', {\n test01ShowHalosForMorph: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(50,50, 100, 100);\n this.world.addMorph(m1);\n m1.showHalos();\n this.assertIdentity(m1, this.world.currentHaloTarget, 'halo target');\n this.assert(m1.halos.length > 0, 'morph has no halos?');\n },\n test02HalosStayInVisibleBounds: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n m1.align(m1.bounds().topRight(), this.world.bounds().topRight());\n this.world.addMorph(m1);\n m1.showHalos(); \n m1.halos.forEach(function(ea) {\n if (ea.constructor == lively.morphic.OriginHalo) return;\n this.assert(this.world.visibleBounds().containsRect(ea.bounds()), 'halo ' + ea + ' not in visibleBounds')\n }, this)\n },\n testTransformRectSoThatItFitsInOuter: function() {\n var outer, r, result;\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(0,0, 10, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(20,30, 10, 20), result);\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(40,40, 10, 12);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(r, result);\n\n outer = new Rectangle(20,30, 80, 70);\n r = new Rectangle(90,90, 20, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(90,90, 10, 10), result);\n },\n\n\n});\n\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ImageTests',\n'testing', {\n testImageMorphHTML: function() {\n var url = 'http://lively-kernel.org/repository/webwerkstatt/media/hpi_logo.png',\n morph = new lively.morphic.Image(new Rectangle(0,0,100,100), url) \n this.world.addMorph(morph);\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'img', attributes: {src: url}}],\n };\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode()); \n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.MenuTests',\n'testing', {\n testWrongSubMenuItems: function() {\n var menu = lively.morphic.Menu.openAt(pt(0,0), 'test', [['foo', ['bar']], ['foo2', ['bar2']]]),\n item = menu.submorphs[1]; // 0 is title, 1 is first item\n this.doMouseEvent({type: 'mouseover', pos: pt(5,5), target: item.renderContext().getMorphNode()});\n this.assertEquals('bar', menu.subMenu.items[0].string, 'sub menu is wrong')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ExternalShapesTests',\n'testing', {\n test01AddADivShape: function() {\n var div = stringToXML('
a test
'),\n morph = new Morph(new lively.morphic.Shapes.External(div));\n this.world.addMorph(morph);\n this.assert(morph.getExtent().x > 0, 'width of morph not bigger than 0');\n this.assert(morph.getExtent().y > 0, 'height of morph not bigger than 0');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LayoutTests',\n'testing', {\n test01DropJournalLayoutOnMorph: function() {\n var container = new Morph();\n container.setExtent(new Point(200,200));\n container.setFill(Color.red);\n container.setLayouter(new lively.morphic.layout.JournalLayout());\n this.world.addMorph(container);\n\n var text = new TextMorph();\n text.setExtent(new Point(300, a.getExtent().y));\n text.setTextString('hello world');\n text.openInWorld();\n text.growOrShrinkToFit();\n\n container.addMorph(text);\n\n this.assertEquals(container.getExtent().y, 2*container.getLayouter().borderSize() + text.getExtent(), \"expected morph's extent to be 200\");\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.SelectionTest',\n'testing', {\n testGrabByHand: function() {\n LastWorld = this.world;\n\n var hand = this.world.hands.first();\n hand.setPosition(pt(10,10))\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(100,20))\n this.world.addMorph(morph2);\n\n var oldPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.world.selectionMorph.selectMorphs([morph1, morph2]);\n this.world.selectionMorph.grabByHand(hand);\n\n var newPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.assertEquals(oldPos, newPos, 'selection pos changed')\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n testDropOn: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(40,40))\n this.world.addMorph(morph2)\n\n this.world.selectionMorph.addMorph(morph1);\n this.world.selectionMorph.dropOn(morph2);\n\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n\n testAddMorph: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n testAddMorphWithSelectionInHand: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.hands.first().addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LineTest',\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(20,100), pt(100,100)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,100\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 100), m.bounds());\n },\n test02SecondPointWithNegativeY: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,-20)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {\n tagName: 'svg',\n childNodes: [{tagName: 'path', attributes: {d: /M0,0\\s*L100,-20\\s*/}}],\n attributes: {height: '20', width: '100', viewBox: '0 -20 100 20'},\n style: {top: '-20px', left: '0px'}\n }\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.bounds());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.shape.getBounds());\n },\n test03aMoveControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(10,10));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L110,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 110, 110), m.bounds());\n },\n\n test03bMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(0,-150));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,-50\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-50, 100, 50), m.bounds());\n },\n test03cMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)])\n this.world.addMorph(m);\n\n // m.getControlPoint(1).moveControlPointBy(pt(0,-150));\n m.getControlPoint(1).moveBy(pt(0,-5));\n m.getControlPoint(1).moveBy(pt(0,10));\n m.getControlPoint(1).moveBy(pt(0,-5));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,0\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 0), m.bounds());\n },\n test04InsertPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.insertControlPointBetween(0, 1, pt(20, 50));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,50\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test05MergeControlPoints: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100), pt(100,120)]);\n ctrlPoint = m.getControlPoint(1);\n\n ctrlPoint.remove();\n\n this.assertEquals(pt(0,0), m.getControlPoint(0).getPos());\n this.assertEquals(pt(100,120), m.getControlPoint(0).next().getPos());\n\n this.assertEqual(2, m.controlPoints.length, 'ctrl point not removed');\n },\n\n\n xtest05aSetOrigin: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(0,100)])\n this.world.addMorph(m);\n\n m.setOrigin(pt(-10, -10))\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg',\n // attributes: {viewBox: \"0 0 110 10\"},\n childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M10,10\\s*L10,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(pt(-10,-10), m.getPosition(), 'morph pos');\n this.assertEquals(pt(10,10), m.getPosition(), 'shape pos');\n },\n test07ControlPointsAreStable: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n ctrlPts1 = m.getControlPoints();\n m.setVertices([pt(0,0), pt(100,110), pt(100,120)]);\n var ctrlPts2 = m.getControlPoints();\n\n this.assertEquals(2, ctrlPts1.length, 'length 1')\n this.assertEquals(3, ctrlPts2.length, 'length 2')\n this.assertIdentity(ctrlPts1[0], ctrlPts2[0], 'ctronolpoints not identical 0');\n this.assertIdentity(ctrlPts1[1], ctrlPts2[1], 'ctronolpoints not identical 1');\n\n this.assertEquals(pt(0,0), ctrlPts2[0].getPos());\n this.assertEquals(pt(100,120), ctrlPts2[2].getPos());\n },\n test08GetNextAndPrevControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,110), pt(100,120)]);\n ctrlPoint = m.getControlPoint(0);\n\n this.assertEquals(pt(0,0), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,120), ctrlPoint.getPos());\n\n ctrlPoint = ctrlPoint.prev();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n },\n test09aSetArrowHead: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n test09bArrowHeadMoves: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n this.assertEquals(0, arrowHead.getRotation().toDegrees());\n\n m.getControlPoint(1).moveBy(pt(0,100));\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n});\n\n\n\n}) // end of moduledule","lastSyntaxHighlightTime":1306785527216,"styleClass":["Browser_codePaneText"],"focusHaloBorderWidth":0.5,"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2890":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2891":{"style":{"__isSmartRef__":true,"id":2892},"chunkOwner":{"__isSmartRef__":true,"id":2889},"storedString":"module('lively.morphic.Tests').requires('lively.TestFramework', 'lively.morphic.Complete').toRun(function() {\n\nTestCase.subclass('lively.morphic.Tests.TestCase',\n'running', {\n tearDown: function($super) {\n $super();\n this.removeTestWorld();\n },\n},\n'helper', {\n removeTestWorld: function() {\n if (this.world) {\n this.world.remove();\n this.world = null;\n }\n if (this.oldAlert)\n Global.alert = this.oldAlert;\n if (this.existingWorld) {\n this.existingWorld.displayOnCanvas(document.getElementsByTagName('body')[0]);\n lively.morphic.World.currentWorld = this.existingWorld;\n this.existingWorld = null;\n }\n },\n openMorphsInRealWorld: function() {\n this.removeTestWorld();\n },\n createWorld: function() {\n if (this.world) return; // already created\n this.existingWorld = lively.morphic.World.current();\n this.world = lively.morphic.World.createOn(document.body, new Rectangle(0,0,300,300));\n this.oldAlert = Global.alert;\n Global.alert = function (msg) { this.existingWorld.alert(String(msg)) }.bind(this)\n },\n serializeAndDeserializeWorld: function() {\n if (!this.world) {\n alert('No test world created');\n return\n }\n var json = this.world.serializeToJSON();\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n },\n\n},\n'assertion', {\n assertNodeMatches: function(expected, node) {\n var self = this,\n fail = function fail(msg) { self.assert(false, msg) };\n if (!expected) fail('expected is null');\n if (!node) fail('node is null but should be ' + expected.tagName);\n if (expected.tagName != node.tagName) fail(expected.tagName + '!=' + node.tagName);\n if (expected.parentNode && (expected.parentNode !== node.parentNode))\n fail('parent is ' + node.parentNode + ' but should be ' + expected.parentNode);\n\n if (expected.textContent) {\n if (expected.textContent != node.textContent)\n fail('textContent ' + expected.textContent + ' != ' + node.textContent);\n }\n\n if (expected.attributes)\n Properties.forEachOwn(expected.attributes, function(key, expectedValue) {\n var actualValue = node.getAttribute(key);\n if (expectedValue instanceof RegExp) {\n if (!expectedValue.test(actualValue))\n fail('attribute ' + key + ' was ' + actualValue + ' and didn\\'t match ' + expectedValue);\n return\n }\n if (expectedValue != actualValue) {\n fail('attribute ' + key + ' not ' + expectedValue + ' but ' + actualValue);\n }\n });\n if (expected.style)\n Properties.forEachOwn(expected.style, function(key, expected) {\n var actualValue = node.style[key].replace(/ /g, '');\n if (Object.isFunction(expected)) {\n self.assert(expected.call(self, actualValue), 'value ' + actualValue + ' did no match')\n return\n }\n if (expected != actualValue)\n fail('style ' + key + ' not ' + expected + ' but ' + actualValue);\n });\n if (expected.childNodeLength)\n this.assertEquals(expected.childNodeLength, node.childNodes.length, 'childNode.length of ' + node)\n if (expected.childNodes)\n for (var i = 0; i < expected.childNodes.length; i++)\n this.assertNodeMatches(expected.childNodes[i], node.childNodes[i]);\n },\n});\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.WorldTests',\n'testing', {\n testAddWorldToDoc: function() {\n var canvasNode = document.body, bounds = new Rectangle(0, 0, 100, 100),\n world = new lively.morphic.World();\n try {\n world.setBounds(bounds);\n world.displayOnCanvas(canvasNode);\n\n var expected = {tagName: 'div', parentNode: canvasNode, childNodes: [{tagName: 'div'}]};\n this.assertNodeMatches(expected, world.renderContext().getMorphNode());\n } finally {\n world.remove();\n }\n },\n});\n\n\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.MorphTests',\n'running', {\n setUp: function($super) {\n $super();\n this.createWorld();\n },\n},\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n this.assert(this.world.submorphs.include(m), 'not in submorphs');\n this.assertIdentity(this.world, m.owner, 'owner');\n\n var expected = {\n tagName: 'div', // world morph\n childNodes: [\n {tagName: 'div'}, // world shape\n {tagName: 'div', childNodes: [{tagName: 'div'}]} // m and its shape\n ]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02aUseSVGRenderer: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext());\n\n var expected = {\n tagName: 'div', // world\n childNodes: [\n {tagName: 'div'}, // world's shape\n {tagName: 'div'}, // hand\n {tagName: 'svg', // submorph\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'rect'}]}]}]};\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n test03MorphWithSVGEllipse: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setShape(new lively.morphic.Shapes.Ellipse(new Rectangle(0,0, 30, 30)));\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'svg',\n childNodes: [{tagName: 'g', childNodes: [{tagName: 'ellipse'}]}]}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test04MorphLocalize: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph2.setPosition(pt(10,10));\n this.assertEquals(pt(0,0), morph2.localize(pt(10,10)));\n },\n test04AddMorphBefore: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph(),\n morph3 = new lively.morphic.Morph();\n // Colors to identify the morphs are in correct order\n morph1.setFill(Color.green);\n morph2.setFill(Color.blue);\n morph3.setFill(Color.yellow);\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n this.world.addMorph(morph3, morph2);\n\n morph1.setExtent(pt(200, 200))\n morph2.setExtent(pt(100, 150))\n morph3.setExtent(pt(150, 100))\n\n // order back to front: morph1, morph3, morph2 \n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph1.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph3.getFill().toString()}}]},\n {tagName: 'div', childNodes: [{tagName: 'div', style: {'backgroundColor': morph2.getFill().toString()}}]},\n {tagName: 'div'}, // hand\n ]}\n\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n\n\n testMorphBounds: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n this.world.addMorph(morph1);\n morph1.addMorph(morph2);\n morph1.setBounds(new Rectangle(100, 100, 40, 40));\n morph2.setBounds(new Rectangle(20, 10, 40, 40));\n this.assertEquals(new Rectangle(100, 100, 60, 50), morph1.getBounds());\n },\n test07MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n shape = new lively.morphic.Shapes.Rectangle(bounds);\n this.assertEquals(bounds, shape.getBounds(), 'shape bounds');\n var morph = new lively.morphic.Morph(shape);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n test08aCreateMorphWithLinearGradient: function() {\n var morph = new lively.morphic.Morph();\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.LinearGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], \"northSouth\"));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(linear,0%0%,0%100%,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test08bCreateMorphWithradialGradient: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setFill(new lively.morphic.RadialGradient(\n [{offset: 0, color: Color.red}, {offset: 0.8, color: Color.green}], pt(0.5,0.3)));\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {'background': \"-webkit-gradient(radial,50%30%,0,50%50%,25,from(rgb(204,0,0)),color-stop(0.8,rgb(0,204,0)))\"}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test09BorderColorAndWidth: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderColor(Color.green);\n morph.setBorderWidth(2.5);\n morph.setStrokeOpacity(0.5);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: {\n // FIXME float conversion in style makes it hard to test directly\n 'border': function(result) { // \"2.5px solid rgba(0,204,0,0.5)\"\n return result.include('2.5px') && result.include('solid') && result.include('rgba(0,204')\n }\n }\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test10BorderRadiusHTML: function() {\n var morph = new lively.morphic.Morph.makeRectangle(0,0,50,50);\n this.world.addMorph(morph);\n morph.setBorderRadius(3);\n var expected = {\n tagName: 'div',\n childNodes: [{ \n tagName: 'div', // morph's shape\n style: { 'border-top-left-radius': '3px3px'}\n }] \n }\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode());\n },\n test12ModifyOrigin: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setOrigin(pt(50, 10));\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test13ModifyOriginWithTransformation: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n morph.setRotation((90).toRadians()); // apply some transformation\n morph.setOrigin(pt(50, 10)); // coordinates local to morph\n this.assertMatches(rect(pt(-20, 0), pt(0, 100)).toString(), morph.bounds().toString(), 'setOrigin wrong')\n \n morph.setRotation(0);\n\n this.assertEquals(pt(-60, 40).extent(pt(100,20)), morph.bounds());\n },\n test14ModifyOriginWithScale: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 50, 10);\n this.world.addMorph(morph);\n\n morph.setScale(2)\n morph.setOrigin(pt(25, 5)); // set origin is in local shape coordinates\n morph.rotateBy((90).toRadians());\n\n this.assertEquals(rect(pt(40, -40), pt(60, 60)), morph.getBounds());\n },\n test15ModifyOriginWithSubmorphs: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 20);\n this.world.addMorph(morph);\n\n var submorph = lively.morphic.Morph.makeRectangle(0, 0, 10, 10); \n morph.addMorph(submorph)\n submorph.setPosition(pt(30,30))\n\n\n morph.setOrigin(pt(20, 20));\n\n this.assertEquals(pt(10,10), submorph.getPosition(), \"submorph pos did not adjust\");\n },\n\n test16MorphsContainingPoint: function() {\n var morph = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(20, 20, 30, 30), \n subsubmorph = lively.morphic.Morph.makeRectangle(25, 25, 5, 5),\n morph2 = lively.morphic.Morph.makeRectangle(48, 48, 100, 100);\n this.world.addMorph(morph)\n morph.addMorph(submorph)\n submorph.addMorph(subsubmorph)\n this.world.addMorph(morph2)\n\n var result, expected;\n\n result = morph.morphsContainingPoint(pt(-1,-1));\n this.assertEquals(0, result.length, 'for ' + pt(-1,-1));\n\n result = morph.morphsContainingPoint(pt(1,1));\n this.assertEquals(1, result.length, 'for ' + pt(1,1));\n this.assertEquals(morph, result[0], 'for ' + pt(1,1));\n\n result = morph.morphsContainingPoint(pt(40,40));\n this.assertEquals(2, result.length, 'for ' + pt(40,40));\n this.assertEquals(submorph, result[0]);\n this.assertEquals(morph, result[1]);\n\n result = morph.morphsContainingPoint(pt(45,45));\n this.assertEquals(3, result.length, 'for ' + pt(45,45));\n this.assertEquals(subsubmorph, result[0]);\n this.assertEquals(submorph, result[1]);\n this.assertEquals(morph, result[2]);\n\n result = this.world.morphsContainingPoint(pt(48,48));\n this.assertEquals(5, result.length, 'for ' + pt(48,48));\n this.assertEquals(morph2, result[0]);\n this.assertEquals(subsubmorph, result[1]);\n this.assertEquals(submorph, result[2]);\n this.assertEquals(morph, result[3]);\n this.assertEquals(this.world, result[4]);\n },\n test17MorphsContainingPointWithAddMorphFront: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n var result = this.world.morphsContainingPoint(pt(1,1));\nthis. openMorphsInRealWorld()\n// inspect(result)\n this.assertEquals(3, result.length);\n // this.assertEquals(this.world.firstHand(), result[0], 'for ' + pt(1,1));\n\n this.assertEquals(morph1, result[0], 'for ' + pt(1,1));\n this.assertEquals(morph2, result[1], 'for ' + pt(1,1));\n },\n test18OrderOfMorphsOnScrennAndInSubmorphArrayMatches: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n morph2 = lively.morphic.Morph.makeRectangle(0, 0, 100, 100);\n\n this.world.addMorph(morph1);\n this.world.addMorphBack(morph2);\n\n this.assertIdentity(this.world.submorphs[0], morph2, 'morph2 not @0')\n this.assertIdentity(this.world.submorphs[1], morph1, 'morph1 not @1')\n },\n test19MorphsContainingPointDosNotIncludeOffsetedOwner: function() {\n var owner = lively.morphic.Morph.makeRectangle(0, 0, 100, 100),\n submorph = lively.morphic.Morph.makeRectangle(110, 10, 90, 90), \n other = lively.morphic.Morph.makeRectangle(100, 0, 100, 100);\n\n owner.name = 'owner'; submorph.name = 'submorph'; other.name = 'other';\n this.world.addMorph(owner)\n owner.addMorph(submorph)\n this.world.addMorphBack(other)\n\n var result = this.world.morphsContainingPoint(pt(150,50));\n this.assertEquals(3, result.length, 'for ' + pt(150,50));\n this.assertEquals(this.world, result[2], 'for 2');\n this.assertEquals(other, result[1], 'for 1');\n this.assertEquals(submorph, result[0], 'for 0');\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.EventTests',\n'testing', {\n xtest05DropMorph: function() {\n var morph1 = new lively.morphic.Morph(),\n morph2 = new lively.morphic.Morph();\n // this.world.addHandMorph();\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n morph1.setBounds(new Rectangle(0,0, 100, 100));\n morph2.setBounds(new Rectangle(0,0, 80, 80));\n morph1.applyStyle({fill: Color.red});\n morph2.applyStyle({fill: Color.green});\n\n // is already done by style settings\n // this.world.enableDropping();\n // morph1.enableDropping();\n // morph1.enableGrabbing();\n // morph2.enableDropping();\n // morph2.enableGrabbing();\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morph2.renderContext().getMorphNode(), button: 0});\n\n this.assert(this.world.firstHand().submorphs.include(morph2), 'morph not grabbed');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(20,20), target: this.world.renderContext().getMorphNode()});\n\n this.assert(morph1.submorphs.include(morph2), 'morph not dropped on morph2'); \n },\n test01DragMorph: function() {\n var dragStarted = false,\n dragMoved = false,\n dragEnded = false,\n morph = new lively.morphic.Morph(),\n morphNode = morph.renderContext().getMorphNode();\n this.world.addMorph(morph);\n morph.setBounds(new Rectangle(0,0, 100, 100));\n morph.applyStyle({fill: Color.red, enableDragging: true});\n\n morph.onDragStart = function() { dragStarted = true }\n morph.onDrag = function() { dragMoved = true }\n morph.onDragEnd = function() { dragEnded = true }\n\n this.doMouseEvent({type: 'mousedown', pos: pt(20,20), target: morphNode, button: 0});\n this.assert(!dragStarted, 'drag already started after mousedown');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(25,25), target: morphNode, button: 0});\n this.assert(dragStarted, 'drag not started after mousedown and mousemove');\n this.assert(!dragMoved, 'drag already moved at dragStart');\n\n this.doMouseEvent({type: 'mousemove', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragMoved, 'drag not moved after mousemove');\n\n this.doMouseEvent({type: 'mouseup', pos: pt(30,30), target: morphNode, button: 0});\n this.assert(dragEnded, 'dragEnd not called');\n },\n test02RelayMouseEventsToMorphBeneath: function() {\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,100,100),\n morph2 = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(morph1);\n this.world.addMorph(morph2);\n\n morph2.relayMouseEventsToMorphBeneath();\n\n lively.morphic.EventSimulator.doMouseEvent(\n {type: 'mousedown', pos: pt(20,20), target: morph2, button: 0});\n this.assertIdentity(morph1, this.world.clickedOnMorph);\n },\n\n});\n \nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CopyMorphTests',\n'testing', {\n test01CopySimpleMorph: function() {\n var m = new lively.morphic.Morph()\n m.setBounds(new Rectangle(100, 100, 40, 40));\n var m2 = m.copy();\n this.assert(m !== m2, 'copied morph is identical to original morph')\n this.assertEquals(new Rectangle(100, 100, 40, 40), m2.getBounds());\n },\n test02ReferencedMorphThatIsNotASubmorphIsNotCopied: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.addMorph(m2)\n m1.other = m3;\n var copy = m1.copy();\n this.assert(copy !== m1, 'copied morph is identical to original morph');\n this.assert(copy.submorphs[0] instanceof lively.morphic.Morph, 'submorph not copied');\n this.assert(copy.submorphs[0] !== m2, 'copied submorph is identical to original submorph');\n this.assert(copy.other === m3, 'referenced morph that is not a submorph is not identical')\n },\n test03OwnerIsNotCopied: function() {\n var m = new lively.morphic.Morph();\n this.world.addMorph(m);\n var copy = m.copy();\n this.assert(!copy.owner, 'owner was copied');\n },\n test04CopyMorphTreeWithEventHandlers: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph(),\n m3 = new lively.morphic.Morph();\n m1.enableGrabbing();\n m2.enableGrabbing();\n m3.enableGrabbing();\n m1.addMorph(m2)\n m2.addMorph(m3)\n this.world.addMorph(m1);\n var copy = m1.copy();\n this.world.addMorph(copy);\n this.assertEquals(2+1, this.world.submorphs.length); // +1 for hand\n this.assertEquals(1, copy.submorphs.length);\n this.assertEquals(1, copy.submorphs[0].submorphs.length);\n },\n test05CopySetsNewTargetForScripts: function() {\n var m1 = new lively.morphic.Morph();\n m1.startStepping(20, 'rotateBy', 0.1);\n var copy = m1.copy();\n\n this.assertIdentity(m1, m1.scripts[0].target, 'original target changed');\n this.assertIdentity(copy, copy.scripts[0].target, 'copy target changed');\n },\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphTests',\n'testing', {\n test01TextMorphHTML: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.setTextString('Foo');\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div', childNodes: [ // shape\n {tagName: 'div', textContent: 'Foo'}] // text node\n }, \n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test02TextMorphSVG: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.SVG.RenderContext())\n m.setTextString('Foo');\n var expected = {\n tagName: 'g',\n childNodes: [\n {tagName: 'rect'}, // shape\n {tagName: 'text', textContent: 'Foo'} // text node\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test03TextStringIsConnectable: function() {\n var m = new lively.morphic.Text()\n this.world.addMorph(m);\n var resultObj = {result: null};\n connect(m, 'textString', resultObj, 'result');\n m.setTextString('Foo');\n this.assertEquals('Foo', resultObj.result);\n },\n test04GrowToFit: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 10, 20));\n this.world.addMorph(m);\n m.setTextString('a really long string longer than 10px')\n m.applyStyle({fixedWidth: false});\n this.assert(m.getExtent().x > 10, 'did not grow to fit text ' + m.bounds().width);\n },\n\n test05SetSelectionRange: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(0,1);\n this.assertEquals('1', m.selectionString());\n m.setSelectionRange(0,3);\n this.assertEquals('123', m.selectionString());\n m.setSelectionRange(-99,m.textString.length+10);\n this.assertEquals('123\\t567\\n9', m.selectionString());\n },\n test05bSetSelectionRangeRightToLeft: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('123\\t567\\n9');\n m.focus();\n m.setSelectionRange(3, 0);\n this.assertEquals('123', m.selectionString());\n this.assertEqualState([3,0], m.getSelectionRange());\n },\n\n test06ModifySelectedLinesInsertsAtCorrectPosition: function() {\n var m = new lively.morphic.Text(new Rectangle(0,0, 100, 20));\n this.world.addMorph(m);\n m.setTextString('This\\nis\\na\\ntest');\n m.setSelectionRange(0,9);\n this.assertEquals('This\\nis\\na', m.selectionString())\n m.modifySelectedLines(function(ea) { return '+' + ea });\n this.assertEquals('+This\\n+is\\n+a\\ntest', m.textString);\n },\n\n\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ScrollTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 60, 200));\n this.world.addMorph(this.text);\n this.text.applyStyle({clipMode: 'scroll', fixedHeight: true})\n\n // 10x test, 9x \\n\\n\\n\n var str = Array.range(1,10).collect(function(i) { return 'test'+i }).join('\\n\\n\\n')\n this.text.setTextString(str);\n },\n},\n'testing', {\n\n test01ScrollSelectionAtBottomIntoView: function() {\n var m = this.text;\n\n // scroll down to be in scroll bounds\n m.setScroll(0, 0) // scroll to top\n m.setSelectionRange(m.textString.length-6,m.textString.length) // select\"test10\"\n m.scrollSelectionIntoView()\n this.assertMatches([0, 321], m.getScroll(), 'does not scroll down');\n\n // scroll up to be in scroll bounds\n m.setSelectionRange(0,5) // select \"test1\"\n\n m.scrollSelectionIntoView()\n this.assertMatches([0,2], m.getScroll(), 'does not scroll up');\n },\n test02ScrollWorld: function() {\n this.world.setExtent(pt(10000, 10000));\n this.world.setScroll(0, 0);\n this.world.setScroll(0, 10);\n this.world.setScroll(0, 10)\n\n this.assertMatches([0,10], this.world.getScroll())\n },\n\n\n});\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.TextMorphRichTextTests',\n'running', {\n setUp: function($super) {\n $super();\n this.text = new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // cop.withLayers([TextDevLayer], function() {\n // return new lively.morphic.Text(new Rectangle(0,0, 400, 200));\n // })\n // this.text.setWithLayers([TextDevLayer]);\n this.world.addMorph(this.text);\n },\n checkRunArray: function(expectedRunArray) {\n this.assertMatches(expectedRunArray.asArray(), this.text.textStyle.asArray());\n },\n checkChunks: function(expectedChunks) {\n this.assertMatches(expectedChunks, this.text.getTextChunks());\n },\n\n checkDOM: function(expectedTextNodes) {\n // check what was actually rendered\n var expected = {\n tagName: 'div',\n childNodeLength: expectedTextNodes.length,\n childNodes: expectedTextNodes\n };\n this.assertNodeMatches(expected, this.text.renderContext().textNode);\n },\n\n\n},\n'testing', {\n test01MorphHasTextChunk: function() {\n// this. openMorphsInRealWorld()\n// inspect(this.text)\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('', chunks[0].textString);\n chunks[0].textString = 'foo';\n this.assertEquals('foo', this.text.textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test02MorphHasTextChunkWhenTextStringIsSet: function() {\n this.text.textString = 'foo'\n var chunks = this.text.getTextChunks();\n this.assertEquals(1, chunks.length);\n this.assertEquals('foo', chunks[0].textString);\n this.checkDOM([{tagName: 'span', textContent: 'foo'}])\n },\n test03SplitAndJoinTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n var after = chunk.splitAfter(3);\n this.assertEquals('test', after.textString, 'after string');\n this.assertEquals('ein', chunk.textString, 'chunk string');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n\n chunk.joinWithNext();\n this.assertEquals('eintest', chunk.textString);\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}]);\n\n var before = chunk.splitBefore(3);\n this.assertEquals('ein', before.textString, 'before string');\n this.assertEquals(2, this.text.getTextChunks().length);\n },\n test03bCoalesceChunks: function() {\n this.text.setTextString('test');\n this.text.firstTextChunk().splitAfter(2);\n this.text.coalesceChunks()\n this.assertEquals(1, this.text.getTextChunks().length);\n this.checkDOM([{tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test03cSplitAtFrontAndBack: function() {\n this.text.setTextString('a');\n var after = this.text.firstTextChunk().splitAfter(1);\n this.assertEquals('', after.textString, 'splitAfter');\n var before = this.text.firstTextChunk().splitBefore(0);\n this.assertEquals('', before.textString, 'splitBefore');\n this.assertEquals(3, this.text.getTextChunks().length);\n },\n test03cSplittedChunkGetsStyle: function() {\n this.text.setTextString('abcdef');\n var chunk = this.text.firstTextChunk();\n chunk.style.setFontWeight('bold');\n var after = this.text.firstTextChunk().splitAfter(3);\n this.assertEquals('bold', after.style.getFontWeight());\n },\n\n\n\n test04SliceTextChunksSimple: function() {\n this.text.setTextString('eintest');\n var sliced = this.text.sliceTextChunks(0,3);\n this.assertEquals(1, sliced.length, 'sliced not oke');\n this.assertEquals(2, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'}])\n },\n\n test04SliceTextChunks: function() {\n this.text.setTextString('eintest');\n var chunk = this.text.firstTextChunk();\n chunk.splitAfter(3);\n var sliced = this.text.sliceTextChunks(2,6);\n this.assertEquals(4, this.text.getTextChunks().length);\n this.checkDOM([\n {tagName: 'span', textContent: 'ei'},\n {tagName: 'span', textContent: 'n'},\n {tagName: 'span', textContent: 'tes'},\n {tagName: 'span', textContent: 't'}])\n },\n test04SliceTextChunksAgain: function() {\n this.text.setTextString('abc');\ndebugger\n var sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'first');\n sliced = this.text.sliceTextChunks(1,2);\n this.assertEquals(1, sliced.length, 'second');\n },\n\n test05StyleChunk: function() {\n this.text.setTextString('test');\n var chunk = this.text.firstTextChunk();\n chunk.styleText({fontWeight: 'bold'});\n this.checkDOM([{tagName: 'span', style: {fontWeight: 'bold'}}]);\n },\n test06MakeTextBold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n test07MakeTextBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 2);\n this.text.emphasize({fontWeight: 'normal'}, 0, 2);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test08ToggleBoldnessComplete: function() {\n this.text.setTextString('eintest');\n this.text.toggleBoldness(1, 6);\n this.checkDOM([\n {tagName: 'span', textContent: 'e'},\n {tagName: 'span', textContent: 'intes'},\n {tagName: 'span', textContent: 't'}])\n this.text.toggleBoldness(1, 6);\n this.checkDOM([{tagName: 'span', textContent: 'eintest'}])\n },\n test09ChunksAreSerializable: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n this.text.name = 'testText';\n this.serializeAndDeserializeWorld();\n this.text = this.world.get('testText');\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n\n },\n test10ConvertSelectionRangeForEmphasis: function() {\n // the indexes used by text selection are currently different\n // to those used for emphasizing the text\n var testValues = [\n {sel: [0,0], emph: [0,0]},\n {sel: [0,7], emph: [0,7]},\n {sel: [1,1], emph: [1,1]},\n {sel: [2,0], emph: [0,2]},\n {sel: [8,0], emph: [0, 8]},\n {sel: [4,7], emph: [4,7]}];\n testValues.forEach(function(selAndEmph) {\n this.assertEqualState(\n selAndEmph.emph,\n this.text.convertSelectionRangeForEmphasis(selAndEmph.sel),\n 'sel conversion of ' + selAndEmph.sel);\n }, this)\n },\n test11ToggleBoldnessWithChunkWithMultipleTextNodes: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n this.text.insertAtCursor('foo');\n this.assertEqual('einfootest', this.text.textString, 'insert')\n this.checkDOM([\n {tagName: 'span', textContent: 'einfootest', childNodes: [\n {tagName: undefined, textContent: 'ein'},\n {tagName: undefined, textContent: 'foo'},\n {tagName: undefined, textContent: 'test'}\n ]},\n ])\n\n this.text.toggleBoldness(1, 9);\n this.checkDOM([\n {tagName: 'span', textContent: 'e', childNodes: [{textContent: 'e'}]},\n {tagName: 'span', textContent: 'infootes', childNodes: [{textContent: 'infootes'}]},\n {tagName: 'span', textContent: 't', childNodes: [{textContent: 't'}]},\n ])\n },\n test11FixChunksShouldKeepSlection: function() {\n this.text.setTextString('eintest');\n // add a text outside of chunks manually\n this.text.renderContext().textNode.appendChild(document.createTextNode('test'))\n this.text.setSelectionRange(2,5)\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest', childNodes: [\n {tagName: undefined, textContent: 'eintesttest'},\n ]},\n ])\n var range = this.text.getSelectionRange()\n this.assert(range, 'no selection range after fixChunks!')\n this.assertMatches([2, 5], range) // Inconsistency with selection ranges?\n },\n test12GetAndSetSelectionRangeHaveEqualValues: function() {\n this.text.setTextString('eintest');\n this.text.setSelectionRange(1, 6)\n this.assertEquals('intes', this.text.selectionString());\n this.assertMatches([1,6], this.text.getSelectionRange());\n },\n test13InsertedTextBetweenChunksIsAssimilated: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 0, 3);\n\n var chunks = this.text.getTextChunks();\n this.assertEqual(2, chunks.length, 'test preparation: chunks not OK')\n\n var newNode = XHTMLNS.create('b')\n newNode.textContent = 'foo';\n\n this.text.renderContext().textNode.insertBefore(newNode, chunks[1].getChunkNode());\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abcfoo'},\n {tagName: 'span', textContent: 'def'},\n ])\n },\n test14GetEmphasisAt: function() {\n // certain actions like native spell checking can add text and other DOM elements\n // between our chunk elements (spans)\n // this should be recognized and additional text appended to some chunk\n this.text.setTextString('abcdef');\n this.text.emphasize({fontWeight: 'bold'}, 1, 3);\n\n var emph, expected = ['normal', 'bold', 'bold', 'normal']\n expected.forEach(function(expectedFontWeight, i) {\n var emph = this.text.getEmphasisAt(i)\n this.assertEquals(expectedFontWeight, emph.getFontWeight(), i);\n },this)\n },\n\n test15GetChunkAndLocalIndex: function() {\n this.text.setTextString('abcdef');\n this.text.sliceTextChunks(1,3);\n this.checkDOM([\n {tagName: 'span', textContent: 'a'},\n {tagName: 'span', textContent: 'bc'},\n {tagName: 'span', textContent: 'def'},\n ]);\n\n var chunks = this.text.getTextChunks(), result;\n \n result = this.text.getChunkAndLocalIndex(0);\n this.assertEquals(chunks[0], result[0]); // test for chunk\n this.assertEquals(0, result[1]); // test for local index\n\n result = this.text.getChunkAndLocalIndex(1); // if chunks ends at idx we extend it\n this.assertEquals(chunks[0], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(2);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(1, result[1])\n\n result = this.text.getChunkAndLocalIndex(1, true);\n this.assertEquals(chunks[1], result[0])\n this.assertEquals(0, result[1])\n },\n test16AddLink: function() {\n this.text.setTextString('eintest');\n this.text.emphasize({uri: 'http://foo.com'}, 0, 3);\n this.checkChunks(\n [{textString: 'ein', style: {uri: 'http://foo.com'}}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {textDecoration: 'underline'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test17AddLinkMakeBoldThenUnbold: function() {\n this.text.setTextString('eintest');\n\n this.text.emphasize({uri: 'test'}, 3, 7)\n this.text.emphasize({fontWeight: 'bold'}, 0, 4)\n this.text.emphasize({fontWeight: 'normal'}, 0, 4)\n\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test', style: {textDecoration: 'underline'}}])\n },\n test18LinkifiedChunkShouldKeepLinkWhenTextStringChanges: function() {\n this.text.setTextString('foo');\n this.text.emphasize({uri: 'test'}, 0, 3);\n\n this.text.firstTextChunk().textString = 'bar'\n\n this.checkChunks([{textString: 'bar', style: {uri: 'test'}}])\n\n this.checkDOM([{\n tagName: 'span',\n textContent: 'bar',\n style: {textDecoration: 'underline'}\n }])\n },\n test19FixChunksShouldRemoveElements: function() {\n this.text.setTextString('eintest');\n\n // this happens when pasting rich text on windows, for now remove RT attributes\n var elem = XHTMLNS.create('a');\n elem.href = 'http://foo.com';\n elem.textContent = 'test';\n\n this.text.firstTextChunk().getChunkNode().appendChild(elem);\n\n this.text.fixChunks()\n this.checkDOM([\n {tagName: 'span', textContent: 'eintesttest',\n // childNodes: [{tagName: undefined, textContent: 'eintesttest'}]\n },\n ])\n },\n test20HandleSplittedSpanNodes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('ac');\n\n var span = XHTMLNS.create('span');\n span.textContent = 'a';\n textNode.insertBefore(span, this.text.firstTextChunk().getChunkNode());\n\n var text = NodeFactory.createText('b');\n textNode.insertBefore(text, this.text.firstTextChunk().getChunkNode());\n\n this.text.firstTextChunk().textString = 'c';\n\n this.text.fixChunks();\n\n this.checkDOM([{tagName: 'span', textContent: 'abc'}]);\n },\n test21HandleSplittedSpanNodesAndTextAttributes: function() {\n // this happens when pasting normal text on windows\n // the span node of a chunk is splitted in two parts and the pasted text\n // is inserted inbetween\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('abc');\n\n this.text.emphasize({fontWeight: 'bold'}, 1,3);\n var chunks = this.text.getTextChunks();\n\n var span = XHTMLNS.create('span');\n span.textContent = 'b';\n textNode.insertBefore(span, chunks.last().getChunkNode());\n // abbc\n\n var text = NodeFactory.createText('x');\n textNode.insertBefore(text, chunks.last().getChunkNode());\n // abxbc\n\n chunks.last().textString = 'c';\n // abxc\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'abx'},\n {tagName: 'span', textContent: 'c', style: {fontWeight: 'bold'}}]);\n },\n test22ReclaimRemovedSpanNodesOnPaste: function() {\n // this happens when pasting normal text on Mac OS after a chunk\n // the span node of the chunk that is pasted into is removed and the chunkNode\n // has no parent anymore. The abandoned chunkNode should reclaim its old text + the isnerted\n\n // add new content\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\n\\nbar\\n\\nbaz');\n\n this.text.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.emphasize({fontWeight: 'bold'}, 10,13);\n var chunks = this.text.getTextChunks();\n\n // remove middle chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var text = NodeFactory.createText('\\n\\nbar zurp\\n\\n');\n textNode.insertBefore(text, chunks[2].getChunkNode());\n\n this.assertEquals('foo\\n\\nbar zurp\\n\\nbaz',textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: '\\n\\nbar zurp\\n\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'baz', style: {fontWeight: 'bold'}}]);\n\n },\n test23ReclaimRemovedChunkNodeAndReapplyTextAttributes: function() {\n // this happens when pasting normal text on Mac OS in attributed text (e.g. bold)\n // Chrome tries to complete render the span itself, e.g. using \n // the chunkNode is removed but the chunk still exists\n // this tests if the chunk can reclaim the text and set it's attributes again\n var textNode = this.text.renderContext().textNode;\n this.text.setTextString('foo\\nbar');\n\n this.text.emphasize({fontWeight: 'bold'}, 4,7);\n var chunks = this.text.getTextChunks();\n\n // remove last chunk node\n var n = chunks[1].getChunkNode();\n n.parentNode.removeChild(n);\n\n var b = XHTMLNS.create('b');\n b.textContent = 'morebar'\n textNode.appendChild(b);\n\n this.assertEquals('foo\\nmorebar', textNode.textContent, 'setup not successful')\n\n this.text.fixChunks();\n\n this.checkDOM([\n {tagName: 'span', textContent: 'foo\\n', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'morebar', style: {fontWeight: 'bold'}}]);\n }, \n\n test22EmphasizeRegex: function() {\n this.text.setTextString(\"a1b2c\");\n this.text.emphasizeRegex(/[0-9]/g, {color: Color.red});\n this.checkChunks([\n {textString: 'a', style: {color: null}},\n {textString: '1', style: {color: Color.red}},\n {textString: 'b', style: {color: null}},\n {textString: '2', style: {color: Color.red}},\n {textString: 'c', style: {color: null}},\n ])\n },\n richTextPasteData: 'ein test',\n\n test23aRichTextPaste: function() {\n var pastedText = this.richTextPasteData,\n rt = lively.morphic.HTMLParser.pastedHTMLToRichText(pastedText);\n this.assertEquals(2, rt.textChunks.length);\n this.assertEquals('ein ', rt.textChunks[0].textString);\n this.assertEquals('test', rt.textChunks[1].textString);\n this.assertEquals('normal', rt.textChunks[0].style.getFontWeight());\n this.assertEquals('bold', rt.textChunks[1].style.getFontWeight());\n \n },\n test24aInsertTextChunks: function() {\n this.text.setTextString('ein');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('test')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n test24bInsertTextChunks: function() {\n this.text.setTextString('eintest');\n this.text.setNullSelectionAt(3);\n var chunk = new lively.morphic.TextChunk('foo')\n\n this.text.insertTextChunksAtCursor([chunk], true, true);\n this.checkDOM([\n {tagName: 'span', textContent: 'ein'},\n {tagName: 'span', textContent: 'foo'},\n {tagName: 'span', textContent: 'test'},\n ])\n },\n\n test25SlicingTextChunksWithRangeWithLengthZero: function() {\n this.text.setTextString('ein');\n var newChunk = this.text.sliceTextChunks(3,3);\n this.assertEquals(2, this.text.textChunks.length)\n this.assertIdentity(newChunk[0], this.text.textChunks.last())\n },\n\n\n\n});\nlively.morphic.Tests.TextMorphRichTextTests.subclass('lively.morphic.Tests.RichTextTests',\n'testing', {\n test01CreateRichText: function() {\n var rt = new lively.morphic.RichText('test');\n this.text.setRichText(rt);\n this.assertEqual('test', this.text.textString)\n },\n test02GetRichText: function() {\n this.text.textString = 'test';\n var rt = this.text.getRichText();\n this.assertEqual('test', rt.textString)\n },\n test03EmphasizeRichText: function() {\n var rt = new lively.morphic.RichText('eintest');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.assertEquals(2, rt.textChunks.length, 'chunks not created in rich text')\n this.text.setRichText(rt);\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n test04InsertInText: function() {\n var rt = new lively.morphic.RichText('foo');\n rt.emphasize({fontWeight: 'bold'}, 0,3);\n this.text.setTextString('einxtest');\n this.text.setSelectionRange(3,4);\n rt.replaceSelectionInMorph(this.text)\n this.checkChunks(\n [{textString: 'ein'}],\n [{textString: 'foo'}],\n [{textString: 'test'}])\n this.checkDOM([\n {tagName: 'span', textContent: 'ein', style: {fontWeight: ''}},\n {tagName: 'span', textContent: 'foo', style: {fontWeight: 'bold'}},\n {tagName: 'span', textContent: 'test', style: {fontWeight: ''}}])\n },\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ButtonMorphTests',\n'testing', {\n test01MorphBoundsOnCreation: function() {\n var bounds = new Rectangle(30, 90, 30, 60),\n morph = new lively.morphic.Button(bounds);\n this.assertEquals(bounds, morph.getBounds(), 'morph bounds');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ListMorphTests',\n'testing', {\n test01SetAndRetrieveStringItems: function() {\n var list = new lively.morphic.List(new Rectangle(0, 0, 100, 100), ['1', '2', '3']);\n this.assertEqualState(['1', '2', '3'], list.itemList);\n list.updateList(['foo']);\n this.assertEqualState(['foo'], list.itemList);\n },\n test02SelectAt: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['first']);\n this.world.addMorph(morph);\n morph.selectAt(0);\n\n this.assertEquals('first', morph.selection);\n // var morphNode = morph.renderContext().getMorphNode();\n // this.doMouseEvent({type: 'mousedown', pos: pt(10,8), target: morphNode, button: 0});\n },\n test03SelectListItem: function() {\n var morph = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(morph);\n morph.updateList([\n {isListItem: true, string: 'foo', value: 23},\n {isListItem: true, string: 'bar', value: 24}])\n morph.selectAt(1);\n this.assertEquals(24, morph.selection);\n },\n\n test04ListMorphBoundsOnCreationInHTML: function() {\n var owner = lively.morphic.Morph.makeRectangle(0,0,10,10),\n list = new lively.morphic.List(new Rectangle (0, 0, 100, 100), ['1', '2', '3']);\n\n owner.addMorph(list)\n this.world.addMorph(owner);\n\n // FIXME depends on HTML\n this.assert(list.renderContext().listNode.clientHeight > 0, 'list node height is wrong')\n },\n test05ListMorphKeepsSelectionHighlightOnUpdateList: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100));\n this.world.addMorph(list);\n\n list.updateList([1,2,3]);\n list.setSelection(2);\n list.updateList([1,2,3]);\n\n var expected = {\n tagName: 'option',\n // attributes: {selected: true} // for some reason this does not work..\n };\n this.assertNodeMatches(expected, list.renderContext().subNodes[1]);\n this.assert(list.renderContext().subNodes[1].selected, 'not selected');\n },\n test06SetSelectionWithListItems: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [{isListItem: true, string: 'foo', value: 23}];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(23);\n\n this.assertEquals(0, list.selectedLineNo);\n },\n testAddMorphDuplicatesListsBug: function() {\n var list = new lively.morphic.List(new Rectangle(0,0,100,100), [1,2,3]),\n rect = lively.morphic.Morph.makeRectangle(0,0,100,100);\n\n this.world.addMorph(list);\n this.world.addMorph(rect);\n rect.addMorph(list);\n\n this.assert(!this.world.submorphs.include(list), 'list in world submorphs')\n this.assert(rect.submorphs.include(list), 'list not in rect submorphs')\n },\n testUpdateListOnSelectionHighlightsSelectionCorrectly: function() {\n var list = new lively.morphic.List(new Rectangle (0, 0, 100, 100)),\n items = [1, 2, 3];\n this.world.addMorph(list);\n\n list.updateList(items);\n list.setSelection(2);\n this.assertEquals(1, list.selectedLineNo);\n\n connect(list, 'selection', list, 'onSelect')\n list.addScript(function onSelect(sel) { this.updateList(this.getList()) });\n\n list.setSelection(3);\n this.assertEquals(2, list.selectedLineNo);\n // FIXME implementation & HTML specific\n var isSelected = list.renderContext().subNodes[2].selected;\n this.assert(isSelected !== '', 'highlight wrong')\n },\n\n\n\n\n\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.AppTests',\n'testing', {\n test01ConfirmDialog: function() {\n var answer = false,\n dialog = this.world.confirm('Foo?', function(bool) { answer = bool });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'no button does not work')\n dialog.okButton.simulateButtonClick();\n this.assert(answer, 'yes button does not work')\n },\n test02PromptDialog: function() {\n var answer = 'nothing',\n dialog = this.world.prompt('Foo?', function(input) { answer = input });\n dialog.cancelButton.simulateButtonClick();\n this.assert(!answer, 'cancel button does not work')\n dialog.inputText.setTextString('test input')\n dialog.okButton.simulateButtonClick();\n this.assertEquals('test input', answer, 'ok button does not work')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.CanvasRenderingTests',\n'testing', {\n test01UseCanvasRendererForSimpleMorph: function() {\n var m = new lively.morphic.Morph()\n this.world.addMorph(m);\n m.renderUsing(new lively.morphic.Canvas.RenderContext())\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}]};\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n test02MorphAndSubmorphWithCanvas: function() {\n var m1 = new lively.morphic.Morph(),\n m2 = new lively.morphic.Morph()\n this.world.addMorph(m1);\n m1.renderUsing(new lively.morphic.Canvas.RenderContext())\n m1.addMorph(m2);\n\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'div'}, // shape\n {tagName: 'div'}, // hand\n {tagName: 'canvas'}],\n };\n this.assertNodeMatches(expected, this.world.renderContext().getMorphNode());\n },\n});\nTestCase.subclass('lively.morphic.Tests.SimilitudeTests',\n'testing', {\n test01PointTransform: function() {\n var globalPoint = pt(20,10),\n globalTransform = new lively.morphic.Similitude(pt(0,0), 0, pt(1,1)),\n localTransform = new lively.morphic.Similitude(pt(5,10), 0, pt(1,1)),\n globalizedInvertedLocal = localTransform.preConcatenate(globalTransform).createInverse(),\n matrix = globalTransform.preConcatenate(globalizedInvertedLocal);\n this.assertEquals(pt(15, 0), globalPoint.matrixTransform(matrix))\n },\n});\nAsyncTestCase.subclass('lively.morphic.Tests.ScriptTests',\n'testing', {\n test01StartAndStopTicking: function() {\n var n = 0, script = new lively.morphic.FunctionScript(function() { script.stop(); n++; });\n script.startTicking(10);\n this.delay(function() {\n this.assertEquals(1, n, 'Script not run once');\n this.done();\n }, 40);\n },\n test02SuspendAndContinue: function() {\n var n = 0,\n script = lively.morphic.Script.forFunction(function() { n++; });\n script.startTicking(10);\n this.delay(function() { this.assertEquals(1, n, 'Script not run once'); script.suspend() }, 15);\n this.delay(function() { this.assertEquals(1, n, 'Script not suspended'); script.resume() }, 25);\n this.delay(function() {\n script.stop();\n this.assertEquals(2, n, 'Script not continued');\n this.done();\n }, 40);\n },\n test03MorphStartStepping: function() {\n var m = new lively.morphic.Morph(),\n arg = {callCount: 0};\n m.someFunction = function(arg) { arg.callCount++ };\n\n m.startStepping(10, 'someFunction', arg);\n this.delay(function() {\n m.remove();\n this.assertEquals(1, arg.callCount, 'someFunction not run once');\n }, 15);\n this.delay(function() {\n this.assertEquals(1, arg.callCount, 'arg call count changed although morph was removed');\n this.done();\n }, 30);\n },\n test04ScriptEquals: function() {\n var cb = function() { return 23 },\n script1 = new lively.morphic.FunctionScript(cb);\n script2 = new lively.morphic.FunctionScript(cb);\n this.assert(script1.equals(script1), 'identity not working');\n this.assert(script1.equals(script2), 'FunctionScript equals');\n\n script1 = new lively.morphic.TargetScript(this, 'foo', 33);\n script2 = new lively.morphic.TargetScript(this, 'foo', 44);\n this.assert(script1.equals(script1), 'identity not working Target');\n this.assert(script1.equals(script2), 'TargetScript equals');\n\n this.done()\n },\n test05StartSteppingChecksIfScriptIsThere: function() {\n var m = new lively.morphic.Morph();\n m.someFunction = function(arg) { return 33 };\n\n m.startStepping(10, 'someFunction');\n m.startStepping(20, 'someFunction');\n\n this.assertEquals(1, m.scripts.length, 'script added twice');\n this.assertEquals(20, m.scripts[0].tickTime, 'tickTime not OK');\n \n this.done();\n },\n\n\n\n\n\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.SerializationTests',\n'testing', {\n test01SerializeSimpleWorld: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n this.world.addMorph(m1);\n m1.setName('SomeMorph');\n var json = lively.persistence.Serializer.serialize(this.world)\n this.world.remove();\n this.world = lively.morphic.World.createFromJSONOn(json, document.body);\n this.assertEquals(2, this.world.submorphs.length) // m1 and hand;\n this.assert(this.world.get('SomeMorph'), 'does not find morph with name from m1');\n this.assert(m1 !== this.world.submorphs[1], 'morphs are identical!!!');\n },\n});\nlively.morphic.Tests.TestCase.subclass('lively.morphic.Tests.HaloTests',\n'testing', {\n test01ShowHalosForMorph: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(50,50, 100, 100);\n this.world.addMorph(m1);\n m1.showHalos();\n this.assertIdentity(m1, this.world.currentHaloTarget, 'halo target');\n this.assert(m1.halos.length > 0, 'morph has no halos?');\n },\n test02HalosStayInVisibleBounds: function() {\n this.createWorld();\n var m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\n m1.align(m1.bounds().topRight(), this.world.bounds().topRight());\n this.world.addMorph(m1);\n m1.showHalos(); \n m1.halos.forEach(function(ea) {\n if (ea.constructor == lively.morphic.OriginHalo) return;\n this.assert(this.world.visibleBounds().containsRect(ea.bounds()), 'halo ' + ea + ' not in visibleBounds')\n }, this)\n },\n testTransformRectSoThatItFitsInOuter: function() {\n var outer, r, result;\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(0,0, 10, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(20,30, 10, 20), result);\n\n outer = new Rectangle(20,30, 100, 100);\n r = new Rectangle(40,40, 10, 12);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(r, result);\n\n outer = new Rectangle(20,30, 80, 70);\n r = new Rectangle(90,90, 20, 20);\n result = outer.transformRectForInclusion(r);\n this.assertEquals(new Rectangle(90,90, 10, 10), result);\n },\n\n\n});\n\n\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ImageTests',\n'testing', {\n testImageMorphHTML: function() {\n var url = 'http://lively-kernel.org/repository/webwerkstatt/media/hpi_logo.png',\n morph = new lively.morphic.Image(new Rectangle(0,0,100,100), url) \n this.world.addMorph(morph);\n var expected = {\n tagName: 'div',\n childNodes: [\n {tagName: 'img', attributes: {src: url}}],\n };\n this.assertNodeMatches(expected, morph.renderContext().getMorphNode()); \n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.MenuTests',\n'testing', {\n testWrongSubMenuItems: function() {\n var menu = lively.morphic.Menu.openAt(pt(0,0), 'test', [['foo', ['bar']], ['foo2', ['bar2']]]),\n item = menu.submorphs[1]; // 0 is title, 1 is first item\n this.doMouseEvent({type: 'mouseover', pos: pt(5,5), target: item.renderContext().getMorphNode()});\n this.assertEquals('bar', menu.subMenu.items[0].string, 'sub menu is wrong')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.ExternalShapesTests',\n'testing', {\n test01AddADivShape: function() {\n var div = stringToXML('
a test
'),\n morph = new Morph(new lively.morphic.Shapes.External(div));\n this.world.addMorph(morph);\n this.assert(morph.getExtent().x > 0, 'width of morph not bigger than 0');\n this.assert(morph.getExtent().y > 0, 'height of morph not bigger than 0');\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LayoutTests',\n'testing', {\n test01DropJournalLayoutOnMorph: function() {\n var container = new Morph();\n container.setExtent(new Point(200,200));\n container.setFill(Color.red);\n container.setLayouter(new lively.morphic.layout.JournalLayout());\n this.world.addMorph(container);\n\n var text = new TextMorph();\n text.setExtent(new Point(300, a.getExtent().y));\n text.setTextString('hello world');\n text.openInWorld();\n text.growOrShrinkToFit();\n\n container.addMorph(text);\n\n this.assertEquals(container.getExtent().y, 2*container.getLayouter().borderSize() + text.getExtent(), \"expected morph's extent to be 200\");\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.SelectionTest',\n'testing', {\n testGrabByHand: function() {\n LastWorld = this.world;\n\n var hand = this.world.hands.first();\n hand.setPosition(pt(10,10))\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(100,20))\n this.world.addMorph(morph2);\n\n var oldPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.world.selectionMorph.selectMorphs([morph1, morph2]);\n this.world.selectionMorph.grabByHand(hand);\n\n var newPos = this.world.selectionMorph.worldPoint(pt(0,0))\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n\n this.assertEquals(oldPos, newPos, 'selection pos changed')\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n testDropOn: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n\n\n var morph2 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph2.setPosition(pt(40,40))\n this.world.addMorph(morph2)\n\n this.world.selectionMorph.addMorph(morph1);\n this.world.selectionMorph.dropOn(morph2);\n\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n\n testAddMorph: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n\n },\n\n testAddMorphWithSelectionInHand: function() {\n LastWorld = this.world;\n\n this.world.resetSelection()\n this.world.hands.first().addMorph(this.world.selectionMorph)\n\n var morph1 = lively.morphic.Morph.makeRectangle(0,0,50,50);\n morph1.setPosition(pt(20,20))\n this.world.addMorph(morph1)\n\n var oldMorph1Pos = morph1.worldPoint(pt(0,0))\n this.world.selectionMorph.addMorph(morph1)\n var newMorph1Pos = morph1.worldPoint(pt(0,0))\n this.assertEquals(oldMorph1Pos, newMorph1Pos, 'oldMorph1Pos changed')\n },\n});\nlively.morphic.Tests.MorphTests.subclass('lively.morphic.Tests.LineTest',\n'testing', {\n test01AddMorph: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(20,100), pt(100,100)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,100\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 100), m.bounds());\n },\n test02SecondPointWithNegativeY: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,-20)])\n this.world.addMorph(m);\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {\n tagName: 'svg',\n childNodes: [{tagName: 'path', attributes: {d: /M0,0\\s*L100,-20\\s*/}}],\n attributes: {height: '20', width: '100', viewBox: '0 -20 100 20'},\n style: {top: '-20px', left: '0px'}\n }\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.bounds());\n this.assertEquals(new Rectangle(0,-20, 100, 20), m.shape.getBounds());\n },\n test03aMoveControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(10,10));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L110,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 110, 110), m.bounds());\n },\n\n test03bMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.getControlPoint(1).moveBy(pt(0,-150));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,-50\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,-50, 100, 50), m.bounds());\n },\n test03cMoveControlPoint2AboveStart: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)])\n this.world.addMorph(m);\n\n // m.getControlPoint(1).moveControlPointBy(pt(0,-150));\n m.getControlPoint(1).moveBy(pt(0,-5));\n m.getControlPoint(1).moveBy(pt(0,10));\n m.getControlPoint(1).moveBy(pt(0,-5));\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L100,0\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(new Rectangle(0,0, 100, 0), m.bounds());\n },\n test04InsertPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)])\n this.world.addMorph(m);\n\n m.insertControlPointBetween(0, 1, pt(20, 50));\n\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg', childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M0,0\\s*L20,50\\s*L100,100\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n },\n test05MergeControlPoints: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100), pt(100,120)]);\n ctrlPoint = m.getControlPoint(1);\n\n ctrlPoint.remove();\n\n this.assertEquals(pt(0,0), m.getControlPoint(0).getPos());\n this.assertEquals(pt(100,120), m.getControlPoint(0).next().getPos());\n\n this.assertEqual(2, m.controlPoints.length, 'ctrl point not removed');\n },\n\n\n xtest05aSetOrigin: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(0,100)])\n this.world.addMorph(m);\n\n m.setOrigin(pt(-10, -10))\n var expected = {\n tagName: 'div', // line morph\n childNodes: [\n {tagName: 'svg',\n // attributes: {viewBox: \"0 0 110 10\"},\n childNodes: [ // shape\n {tagName: 'path', attributes: {d: /M10,10\\s*L10,110\\s*/ }}\n ]}\n ]};\n this.assertNodeMatches(expected, m.renderContext().getMorphNode());\n this.assertEquals(pt(-10,-10), m.getPosition(), 'morph pos');\n this.assertEquals(pt(10,10), m.getPosition(), 'shape pos');\n },\n test07ControlPointsAreStable: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n ctrlPts1 = m.getControlPoints();\n m.setVertices([pt(0,0), pt(100,110), pt(100,120)]);\n var ctrlPts2 = m.getControlPoints();\n\n this.assertEquals(2, ctrlPts1.length, 'length 1')\n this.assertEquals(3, ctrlPts2.length, 'length 2')\n this.assertIdentity(ctrlPts1[0], ctrlPts2[0], 'ctronolpoints not identical 0');\n this.assertIdentity(ctrlPts1[1], ctrlPts2[1], 'ctronolpoints not identical 1');\n\n this.assertEquals(pt(0,0), ctrlPts2[0].getPos());\n this.assertEquals(pt(100,120), ctrlPts2[2].getPos());\n },\n test08GetNextAndPrevControlPoint: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,110), pt(100,120)]);\n ctrlPoint = m.getControlPoint(0);\n\n this.assertEquals(pt(0,0), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n ctrlPoint = ctrlPoint.next();\n this.assertEquals(pt(100,120), ctrlPoint.getPos());\n\n ctrlPoint = ctrlPoint.prev();\n this.assertEquals(pt(100,110), ctrlPoint.getPos());\n },\n test09aSetArrowHead: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,100)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n test09bArrowHeadMoves: function() {\n var m = new lively.morphic.Path([pt(0,0), pt(100,0)]),\n arrowHead = new lively.morphic.Path([pt(0,0), pt(0,20), pt(20,10), pt(0,0)]);\n\n arrowHead.setOrigin(pt(20,10))\n m.addArrowHeadEnd(arrowHead);\n this.assertEquals(0, arrowHead.getRotation().toDegrees());\n\n m.getControlPoint(1).moveBy(pt(0,100));\n\n this.assertEquals(45, arrowHead.getRotation().toDegrees());\n },\n});\n\n\n\n}) // end of moduledule","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2892":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2893":{"_Position":{"__isSmartRef__":true,"id":2894},"renderContextTable":{"__isSmartRef__":true,"id":2895},"_Extent":{"__isSmartRef__":true,"id":2896},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1133},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2894":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2895":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2896":{"x":820,"y":269.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2897":{"x":5,"y":5,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2898":{"morph":{"__isSmartRef__":true,"id":2889},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2899":{"x":0,"y":247.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2900":{"x":820,"y":269.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2901":{"resizeWidth":true,"resizeHeight":true},"2902":{"sourceObj":{"__isSmartRef__":true,"id":2889},"sourceAttrName":"textString","targetObj":{"__isSmartRef__":true,"id":2889},"targetMethodName":"highlightJavaScriptSyntax","__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2903":{"sourceObj":{"__isSmartRef__":true,"id":2889},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setSourceString","converter":null,"converterString":null,"updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2904},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2904":{"source":{"__isSmartRef__":true,"id":2889},"target":{"__isSmartRef__":true,"id":2252}},"2905":{"source":{"__isSmartRef__":true,"id":2252},"target":{"__isSmartRef__":true,"id":2889}},"2906":{"sourceObj":{"__isSmartRef__":true,"id":2252},"sourceAttrName":"targetURL","targetObj":{"__isSmartRef__":true,"id":2240},"targetMethodName":"setTextString","converter":null,"converterString":null,"updaterString":"function ($upd, value) { value && $upd(String(value)) }","varMapping":{"__isSmartRef__":true,"id":2907},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":2908},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2907":{"source":{"__isSmartRef__":true,"id":2252},"target":{"__isSmartRef__":true,"id":2240}},"2908":{"updater":{"__isSmartRef__":true,"id":2909}},"2909":{"originalFunc":null,"varMapping":{"__isSmartRef__":true,"id":2907},"source":"function ($upd, value) { value && $upd(String(value)) }","funcProperties":{"__isSmartRef__":true,"id":2910},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global"},"2910":{},"2911":{"source":{"__isSmartRef__":true,"id":2240},"target":{"__isSmartRef__":true,"id":2252}},"2912":{"submorphs":[{"__isSmartRef__":true,"id":2913}],"scripts":[],"id":31,"renderContextTable":{"__isSmartRef__":true,"id":2925},"shape":{"__isSmartRef__":true,"id":2926},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2930},"_Position":{"__isSmartRef__":true,"id":2931},"priorExtent":{"__isSmartRef__":true,"id":2932},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2933},"label":{"__isSmartRef__":true,"id":2913},"owner":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2942}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2913":{"submorphs":[],"scripts":[],"id":32,"renderContextTable":{"__isSmartRef__":true,"id":2914},"textChunks":[{"__isSmartRef__":true,"id":2915}],"shape":{"__isSmartRef__":true,"id":2917},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2921},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2922},"_Position":{"__isSmartRef__":true,"id":2923},"priorExtent":{"__isSmartRef__":true,"id":2924},"_MaxTextWidth":98.39999999999999,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2912},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2914":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2915":{"style":{"__isSmartRef__":true,"id":2916},"chunkOwner":{"__isSmartRef__":true,"id":2913},"storedString":"codebase","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2916":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2917":{"_Position":{"__isSmartRef__":true,"id":2918},"renderContextTable":{"__isSmartRef__":true,"id":2919},"_Extent":{"__isSmartRef__":true,"id":2920},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2918":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2919":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2920":{"x":98.39999999999999,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2921":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2922":{"morph":{"__isSmartRef__":true,"id":2913},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2923":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2924":{"x":98.39999999999999,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2925":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2926":{"_Position":{"__isSmartRef__":true,"id":2927},"renderContextTable":{"__isSmartRef__":true,"id":2928},"_Extent":{"__isSmartRef__":true,"id":2929},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2927":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2928":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2929":{"x":98.39999999999999,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2930":{"morph":{"__isSmartRef__":true,"id":2912},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2931":{"x":656,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2932":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2933":{"stops":[{"__isSmartRef__":true,"id":2934},{"__isSmartRef__":true,"id":2936},{"__isSmartRef__":true,"id":2938},{"__isSmartRef__":true,"id":2940}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2934":{"offset":0,"color":{"__isSmartRef__":true,"id":2935}},"2935":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2936":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2937}},"2937":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2938":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2939}},"2939":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2940":{"offset":1,"color":{"__isSmartRef__":true,"id":2941}},"2941":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2942":{"sourceObj":{"__isSmartRef__":true,"id":2912},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setTargetURL","converterString":"function () { return URL.codeBase.withFilename('lively/')}","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2943},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":2944},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2943":{"source":{"__isSmartRef__":true,"id":2912},"target":{"__isSmartRef__":true,"id":2252}},"2944":{"converter":{"__isSmartRef__":true,"id":2945}},"2945":{"originalFunc":null,"varMapping":{"__isSmartRef__":true,"id":2943},"source":"function () { return URL.codeBase.withFilename('lively/')}","funcProperties":{"__isSmartRef__":true,"id":2946},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global"},"2946":{},"2947":{"submorphs":[{"__isSmartRef__":true,"id":2948}],"scripts":[],"id":33,"renderContextTable":{"__isSmartRef__":true,"id":2960},"shape":{"__isSmartRef__":true,"id":2961},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2965},"_Position":{"__isSmartRef__":true,"id":2966},"priorExtent":{"__isSmartRef__":true,"id":2967},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":1160},"lighterFill":{"__isSmartRef__":true,"id":2968},"label":{"__isSmartRef__":true,"id":2948},"owner":{"__isSmartRef__":true,"id":2239},"attributeConnections":[{"__isSmartRef__":true,"id":2977}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__LivelyClassName__":"lively.morphic.Button","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2948":{"submorphs":[],"scripts":[],"id":34,"renderContextTable":{"__isSmartRef__":true,"id":2949},"textChunks":[{"__isSmartRef__":true,"id":2950}],"shape":{"__isSmartRef__":true,"id":2952},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":2956},"_ClipMode":"hidden","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":false,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":2957},"_Position":{"__isSmartRef__":true,"id":2958},"priorExtent":{"__isSmartRef__":true,"id":2959},"_MaxTextWidth":65.6,"_MaxTextHeight":22,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2947},"isLabel":true,"_HandStyle":"default","eventsAreIgnored":true,"_Align":"center","__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2949":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2950":{"style":{"__isSmartRef__":true,"id":2951},"chunkOwner":{"__isSmartRef__":true,"id":2948},"storedString":"local","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2951":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2952":{"_Position":{"__isSmartRef__":true,"id":2953},"renderContextTable":{"__isSmartRef__":true,"id":2954},"_Extent":{"__isSmartRef__":true,"id":2955},"_BorderWidth":0,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":null,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2953":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2954":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2955":{"x":65.6,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2956":{"x":0,"y":0,"width":0,"height":0,"__LivelyClassName__":"Rectangle","__SourceModuleName__":"Global"},"2957":{"morph":{"__isSmartRef__":true,"id":2948},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2958":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2959":{"x":65.6,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2960":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2961":{"_Position":{"__isSmartRef__":true,"id":2962},"renderContextTable":{"__isSmartRef__":true,"id":2963},"_Extent":{"__isSmartRef__":true,"id":2964},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1159},"_Fill":{"__isSmartRef__":true,"id":1160},"_BorderRadius":5,"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2962":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2963":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2964":{"x":65.6,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2965":{"morph":{"__isSmartRef__":true,"id":2947},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2966":{"x":754.4,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2967":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2968":{"stops":[{"__isSmartRef__":true,"id":2969},{"__isSmartRef__":true,"id":2971},{"__isSmartRef__":true,"id":2973},{"__isSmartRef__":true,"id":2975}],"vector":{"__isSmartRef__":true,"id":1169},"__LivelyClassName__":"lively.morphic.LinearGradient","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2969":{"offset":0,"color":{"__isSmartRef__":true,"id":2970}},"2970":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2971":{"offset":0.4,"color":{"__isSmartRef__":true,"id":2972}},"2972":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2973":{"offset":0.6,"color":{"__isSmartRef__":true,"id":2974}},"2974":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2975":{"offset":1,"color":{"__isSmartRef__":true,"id":2976}},"2976":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"2977":{"sourceObj":{"__isSmartRef__":true,"id":2947},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":2252},"targetMethodName":"setTargetURL","converter":null,"converterString":"function () { return URL.source.getDirectory() }","updater":null,"updaterString":null,"varMapping":{"__isSmartRef__":true,"id":2978},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings"},"2978":{"source":{"__isSmartRef__":true,"id":2947},"target":{"__isSmartRef__":true,"id":2252}},"2979":{"submorphs":[],"scripts":[],"id":39,"renderContextTable":{"__isSmartRef__":true,"id":2980},"shape":{"__isSmartRef__":true,"id":2981},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2985},"_Position":{"__isSmartRef__":true,"id":2986},"fixed":[{"__isSmartRef__":true,"id":2254},{"__isSmartRef__":true,"id":2288},{"__isSmartRef__":true,"id":2322},{"__isSmartRef__":true,"id":2356},{"__isSmartRef__":true,"id":2390},{"__isSmartRef__":true,"id":2424},{"__isSmartRef__":true,"id":2458}],"scalingBelow":[{"__isSmartRef__":true,"id":2889}],"scalingAbove":[{"__isSmartRef__":true,"id":2499},{"__isSmartRef__":true,"id":2786},{"__isSmartRef__":true,"id":2851},{"__isSmartRef__":true,"id":2870}],"minHeight":20,"pointerConnection":null,"owner":{"__isSmartRef__":true,"id":2239},"styleClass":["Browser_resizer"],"__LivelyClassName__":"lively.morphic.HorizontalDivider","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2980":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2981":{"_Position":{"__isSmartRef__":true,"id":2982},"renderContextTable":{"__isSmartRef__":true,"id":2983},"_Extent":{"__isSmartRef__":true,"id":2984},"_Fill":{"__isSmartRef__":true,"id":1732},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2982":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2983":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2984":{"x":820,"y":5.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2985":{"morph":{"__isSmartRef__":true,"id":2979},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2986":{"x":0,"y":242,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2987":{"submorphs":[],"scripts":[],"id":41,"renderContextTable":{"__isSmartRef__":true,"id":2988},"shape":{"__isSmartRef__":true,"id":2989},"droppingEnabled":true,"halosEnabled":true,"draggingEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2993},"_Position":{"__isSmartRef__":true,"id":2994},"fixed":[],"scalingBelow":[{"__isSmartRef__":true,"id":2995}],"scalingAbove":[{"__isSmartRef__":true,"id":2889}],"minHeight":20,"pointerConnection":null,"owner":{"__isSmartRef__":true,"id":2239},"styleClass":["Browser_resizer"],"__LivelyClassName__":"lively.morphic.HorizontalDivider","__SourceModuleName__":"Global.lively.morphic.Widgets"},"2988":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"2989":{"_Position":{"__isSmartRef__":true,"id":2990},"renderContextTable":{"__isSmartRef__":true,"id":2991},"_Extent":{"__isSmartRef__":true,"id":2992},"_Fill":{"__isSmartRef__":true,"id":1732},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"2990":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2991":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"2992":{"x":820,"y":5.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2993":{"morph":{"__isSmartRef__":true,"id":2987},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"2994":{"x":0,"y":517,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"2995":{"submorphs":[],"scripts":[],"id":42,"renderContextTable":{"__isSmartRef__":true,"id":2996},"textChunks":[{"__isSmartRef__":true,"id":2997}],"shape":{"__isSmartRef__":true,"id":2999},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"_Padding":{"__isSmartRef__":true,"id":1134},"_ClipMode":"scroll","fixedWidth":true,"_WhiteSpaceHandling":"pre-wrap","fixedHeight":true,"allowInput":true,"_FontFamily":"Helvetica","eventHandler":{"__isSmartRef__":true,"id":3003},"_Position":{"__isSmartRef__":true,"id":3004},"priorExtent":{"__isSmartRef__":true,"id":3005},"_MaxTextWidth":820,"_MaxTextHeight":27.5,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":2239},"styleClass":["Browser_commentPaneText"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2996":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML","updateText":"updateTextHTML","setTextExtent":"setTextExtentHTML","setMaxTextWidth":"setMaxTextWidthHTML","setMaxTextHeight":"setMaxTextHeightHTML","getTextExtent":"getTextExtentHTML","getTextString":"getTextStringHTML","ignoreTextEvents":"ignoreTextEventsHTML","enableTextEvents":"enableTextEventsHTML","setFontFamily":"setFontFamilyHTML","setFontSize":"setFontSizeHTML","setTextColor":"setTextColorHTML","setPadding":"setPaddingHTML","setAlign":"setAlignHTML","setVerticalAlign":"setVerticalAlignHTML","setDisplay":"setDisplayHTML","setWhiteSpaceHandling":"setWhiteSpaceHandlingHTML"},"2997":{"style":{"__isSmartRef__":true,"id":2998},"chunkOwner":{"__isSmartRef__":true,"id":2995},"storedString":"","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2998":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"2999":{"_Position":{"__isSmartRef__":true,"id":3000},"renderContextTable":{"__isSmartRef__":true,"id":3001},"_Extent":{"__isSmartRef__":true,"id":3002},"_BorderWidth":1,"_BorderColor":{"__isSmartRef__":true,"id":1132},"_Fill":{"__isSmartRef__":true,"id":1133},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"3000":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3001":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"3002":{"x":820,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3003":{"morph":{"__isSmartRef__":true,"id":2995},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"3004":{"x":0,"y":522.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3005":{"x":820,"y":27.5,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3006":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"3007":{"_Position":{"__isSmartRef__":true,"id":3008},"renderContextTable":{"__isSmartRef__":true,"id":3009},"_Extent":{"__isSmartRef__":true,"id":3010},"_Fill":{"__isSmartRef__":true,"id":3011},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes"},"3008":{"x":0,"y":0,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3009":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"3010":{"x":820,"y":550,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3011":{"r":0.9,"g":0.9,"b":0.9,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"3012":{"adjustForNewBounds":true},"3013":{"morph":{"__isSmartRef__":true,"id":2239},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"3014":{"x":0,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3015":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"3016":{"renderContextTable":{"__isSmartRef__":true,"id":3017},"_BorderWidth":0,"_Fill":null,"_StrokeOpacity":0,"_BorderRadius":0,"_Extent":{"__isSmartRef__":true,"id":3018},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"3017":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"3018":{"x":820,"y":572,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3019":{"adjustForNewBounds":true},"3020":{"morph":{"__isSmartRef__":true,"id":2106},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"3021":{"x":1038.491486982478,"y":757.2503755006258,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3022":{"x":820,"y":572,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3023":{"x":1261.5217820423027,"y":745.4902349797245,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3024":{"submorphs":[],"scripts":[],"id":226,"shape":{"__isSmartRef__":true,"id":3025},"grabbingEnabled":false,"droppingEnabled":false,"showsMorphMenu":false,"halosEnabled":false,"registeredForMouseEvents":true,"_world":{"__isSmartRef__":true,"id":0},"_Position":{"__isSmartRef__":true,"id":3030},"owner":{"__isSmartRef__":true,"id":0},"__SourceModuleName__":"Global.lively.morphic.Events","carriesGrabbedMorphs":false,"_Scale":1,"_Rotation":0,"renderContextTable":{"__isSmartRef__":true,"id":3031},"eventHandler":{"__isSmartRef__":true,"id":3032},"__LivelyClassName__":"lively.morphic.HandMorph"},"3025":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":3026},"_Extent":{"__isSmartRef__":true,"id":3027},"_Fill":{"__isSmartRef__":true,"id":3028},"renderContextTable":{"__isSmartRef__":true,"id":3029},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"3026":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3027":{"x":2,"y":2,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3028":{"r":0.8,"g":0,"b":0,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"3029":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"3030":{"x":1716,"y":708,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"3031":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"3032":{"morph":{"__isSmartRef__":true,"id":3024},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"3033":{"__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":{"__isSmartRef__":true,"id":3034},"_Extent":{"__isSmartRef__":true,"id":3035},"_Fill":{"__isSmartRef__":true,"id":3036},"renderContextTable":{"__isSmartRef__":true,"id":3037},"__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"3034":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3035":{"x":2800,"y":2900,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3036":{"r":1,"g":1,"b":1,"a":1,"__LivelyClassName__":"Color","__SourceModuleName__":"Global"},"3037":{"init":"initHTML","appendShape":"renderHTML","setPosition":"setPositionHTML","setExtent":"setExtentHTML","setFill":"setFillHTML","setBorderColor":"setBorderColorHTML","setBorderWidth":"setBorderWidthHTML","setStrokeOpacity":"setStrokeOpacityHTML","setBorderRadius":"setBorderRadiusHTML","setBorderStyle":"setBorderStyleHTML","setOpacity":"setOpacityHTML"},"3038":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"3039":{"replaceRenderContext":"replaceRenderContextHTML","init":"initHTML","append":"appendHTML","remove":"removeHTML","triggerEvent":"triggerEventHTML","setPosition":"setPositionHTML","setRotation":"setRotationHTML","setExtent":"setExtentHTML","setScale":"setScaleHTML","setVisible":"setVisibleHTML","setOrigin":"setOriginHTML","setClipMode":"setClipModeHTML","setHandStyle":"setHandStyleHTML"},"3040":{"morph":{"__isSmartRef__":true,"id":0},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"3041":{"x":1678,"y":722,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"isSimplifiedRegistry":true}}]]>