' + eventSpec.target + '>>' + eventSpec.targetMethodName)\n\t\teventSpec.node = this.morph.renderContext().morphNode;\n\t\teventSpec.doNotSerialize = ['node'];\n\t\tif (!eventSpec.node)\n\t\t\tthrow new Error('Cannot register vent handler because cannot find HTML/SVG morphNode');\n\t\teventSpec.handlerFunc = this.handleEvent.bind(this);\n\t\teventSpec.unregisterMethodName = 'unregisterHTMLAndSVGAndCANVAS';\n\t\teventSpec.handleOnCapture = false;\n\t\teventSpec.node.addEventListener(eventSpec.type, eventSpec.handlerFunc, eventSpec.handleOnCapture);\n\t\tthis.register(eventSpec);\n\t},\n\tregisterCANVAS: function(eventSpec) {\n\t\tif (eventSpec.node) { alert('EventHandler still registered in DOM?'); debugger };\n// alert('registering event: ' + eventSpec.type + ' -> ' + eventSpec.target + '>>' + eventSpec.targetMethodName)\n\t\teventSpec.node = this.morph.renderContext().getCanvas();\n\t\tif (!eventSpec.node)\n\t\t\tthrow dbgOn(new Error('Cannot register event handler because cannot find CANVAS node'));\n\t\teventSpec.handlerFunc = this.handleEventCANVAS.bind(this);\n\t\teventSpec.unregisterMethodName = 'unregisterHTMLAndSVGAndCANVAS';\n\t\teventSpec.handleOnCapture = false;\n\t\teventSpec.node.addEventListener(eventSpec.type, eventSpec.handlerFunc, eventSpec.handleOnCapture);\n\t\tthis.register(eventSpec);\n\t},\n},\n'unregistering', {\n\tdisable: function() { this.unregisterFromDispatchTable() },\n\tunregisterFromDispatchTable: function() {\n\t\tthis.eventSpecsDo(function(eventSpec) {\n\t\t\tif (!eventSpec.unregisterMethodName) throw new Error('Cannot unregister event handler ' + this);\n\t\t\tthis[eventSpec.unregisterMethodName](eventSpec);\n\t\t}, this);\n\t},\n\tunregisterHTMLAndSVGAndCANVAS: function(evtSpec) {\n\t\tif (!evtSpec.node) return;\n\t\tevtSpec.node.removeEventListener(evtSpec.type, evtSpec.handlerFunc, evtSpec.handleOnCapture);\n\t\tdelete evtSpec.node;\n\t},\n},\n'updating', {\n\tupdate: function() {\n\t\tthis.disable();\n\t\tthis.enable();\n\t},\n},\n'handle events', {\n\thandleEvent: function(evt) {\n\t\t// var ourEvent = new Event(evt);\n\t\tvar eventSpec = this.dispatchTable[evt.type];\n\n\t\tif (!eventSpec) return false;\n\n// if (evt.type !== 'mousemove')\n\t// alert('handling ' + evt.type)\n\n\t\tif (Global.LastEventWasHandled && evt === Global.LastEvent) {\n\t\t\t// alert('stopping ' + evt + ' ' + eventSpec.targetMethodName)\n\t\t\treturn false;\n\t\t}\n\t\tGlobal.LastEvent = evt;\n\t\tGlobal.LastEventWasHandled = false;\n\n\t\tthis.patchEvent(evt);\n\n\t\ttry {\n\t\t\tvar wasHandled = eventSpec.target[eventSpec.targetMethodName](evt);\n\t\t} catch(e) {\n\t\t\talert('Error in handleEvent ' + e + '\\n' + e.stack)\n\t\t}\n\n\t\t// alert('trying ' + evt + ' ' + eventSpec.targetMethodName + ' ...' + wasHandled)\n\n\t\tGlobal.LastEventWasHandled = Global.LastEventWasHandled || wasHandled;\n\t\t// if (Global.LastEventWasHandled) alert('evt ' + evt + ' was handled ' + eventSpec.targetMethodName)\n\t\treturn true;\n\t},\n\tpatchEvent: function(evt) {\n\t\t// FIXME add event function\n\n\t\tevt.isLeftMouseButtonDown = function() { return evt.button === 0 },\n\t\tevt.isMiddleMouseButtonDown = function() { return evt.button === 1 },\n\t\tevt.isRightMouseButtonDown = function() { return evt.button === 2 },\n\n\t\tevt.isCommandKey = function() {\n\t\t\t// this is LK convention, not the content of the event\n\t\t\tif (Config.useAltAsCommand)\n\t\t\t\treturn evt.altKey;\n\t\t\tif (UserAgent.isWindows || UserAgent.isLinux )\n\t\t\t\treturn evt.ctrlKey;\n\t\t\tif (UserAgent.isOpera) // Opera recognizes cmd as ctrl!!?\n\t\t\t\treturn evt.ctrlKey;\n\t\t\treturn evt.metaKey;\n\t\t};\n\n\t\tevt.isShiftDown = function() { return evt.shiftKey };\n\t\tevt.stop = evt.stop || function() { evt.isStopped = true; evt.stopPropagation(); evt.preventDefault() };\n\t\tevt.mousePoint = evt.mousePoint || pt(evt.pageX || evt.clientX, evt.pageY || evt.clientY);\n\n\t\tevt.getKeyChar = function() {\n\t\t\tif (evt.type == \"keypress\") { // rk what's the reason for this test?\n\t\t\t\tvar id = evt.charCode || evt.which;\n\t\t\t\tif (id > 63000) return \"\"; // Old Safari sends weird key char codes\n\t\t\t\treturn id ? String.fromCharCode(id) : \"\";\n\t\t\t} else {\n\t\t\t\tvar code = evt.which;\n\t\t\t\treturn code && String.fromCharCode(code);\n\t\t\t}\n\t\t}\n\n\t\tevt.getKeyCode = function() { return evt.keyCode }\n\n\t\tevt.isMouseEvent = evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'mousemove';\n\n\t\tvar world = lively.morphic.World.current();\n\t\tevt.world = world;\n\t\tevt.hand = world.hands[0];\n\t\t\n\t\treturn evt\n\t},\n\n\thandleEventCANVAS: function(evt) {\n\t\tif (evt.isStopped) return false;\n\t\tvar eventSpec = this.dispatchTable[evt.type];\n\t\tif (!eventSpec) return false;\n\n\t\tthis.patchEvent(evt);\n\n\t\tvar inner = this.morph.getExtent().extentAsRectangle();\n\t\tif (!inner.containsPoint(this.morph.localize(evt.mousePoint))) return false;\n\n\t\ttry {\n\t\t\teventSpec.target[eventSpec.targetMethodName](evt);\n\t\t} catch(e) {\n\t\t\talert('Error in handleEvent ' + e + '\\n' + e.stack)\n\t\t}\n\t\treturn true;\n\t},\n\n},\n'debugging', {\n\ttoString: function() {\n\t\treturn ''\n\t},\n});\nObject.extend(lively.morphic.EventHandler, {\n\tprepareEventSystem: (function() {\n\t\tGlobal.document.oncontextmenu = Functions.False\n\t})(),\n});\nObject.extend(Event, {\n\t// copied from prototype.js:\n\tKEY_BACKSPACE: 8,\n\tKEY_TAB: 9,\n\tKEY_RETURN: 13,\n\tKEY_ESC: 27,\n\tKEY_LEFT: 37,\n\tKEY_UP: 38,\n\tKEY_RIGHT: 39,\n\tKEY_DOWN: 40,\n\tKEY_DELETE: 46,\n\tKEY_HOME: 36,\n\tKEY_END: 35,\n\tKEY_PAGEUP: 33,\n\tKEY_PAGEDOWN: 34,\n\tKEY_INSERT: 45,\n\n\t// not in prototype.js:\n\tKEY_SPACEBAR: 32,\n\tKEY_SHIFT: 16,\n\tKEY_CTRL: 17,\n\tKEY_ALT: 18,\n\tKEY_CMD: 91,\n});\n\nlively.morphic.Morph.addMethods(\n'event managment', {\n\taddEventHandler: function() {\n\t\tif (this.eventHandler) throw new Error('Morph ' + this + ' already has an event handler!');\n\t\tvar handler = new lively.morphic.EventHandler(this);\n\t\tthis.eventHandler = handler;\n\t\treturn handler;\n\t},\n\tremoveEventHandlers: function() {\n\t\tif (!this.eventHandler) return;\n\t\tthis.eventHandler.disable();\n\t\tthis.eventHandler = null;\n\t},\n\tregisterForEvent: function(type, target, targetMethodName, handleOnCapture) {\n\t\tif (!this.eventHandler) this.addEventHandler();\n\t\tvar existing = this.eventHandler.dispatchTable[type];\n\t\tif (existing) {\n\t\t\tconsole.warn(Strings.format('Warning! Event %s already handled: %s.%s. Overwriting with %s.%s!',\n\t\t\t\ttype, existing.target, existing.targetMethodName, target, targetMethodName));\n\t\t\tdebugger;\n\t\t}\n\t\tvar eventSpec = {\n\t\t\ttype: type,\n\t\t\ttarget: target,\n\t\t\ttargetMethodName: targetMethodName,\n\t\t\thandleOnCapture: handleOnCapture\n\t\t};\n\t\tthis.renderContext().registerHandlerForEvent(this.eventHandler, eventSpec);\n\t},\n\tenableEventHandler: function() {\n\t\tif (this.eventHandler && !this.eventsAreIgnored) this.eventHandler.enable();\n\t},\n\tenableEventHandlerRecursively: function() {\n\t\tthis.withAllSubmorphsDo(function(morph) { morph.enableEventHandler() })\n\t},\n\tdisableEventHandler: function() {\n\t\tif (this.eventHandler) this.eventHandler.disable();\n\t},\n\tdisableEventHandlerRecursively: function() {\n\t\tthis.withAllSubmorphsDo(function(morph) { morph.disableEventHandler() })\n\t},\n\tignoreEvents: function() {\n\t\tthis.eventsAreIgnored = true;\n\t\tthis.disableEventHandler();\n\t},\n\tenableEvents: function() {\n\t\tthis.eventsAreIgnored = false;\n\t\tthis.enableEventHandler();\n\t},\n\tareEventsIgnored: function() { return this.eventsAreIgnored },\n\n},\n'event handling', {\n\tregisterForMouseEvents: function(handleOnCapture) {\n\t\tif (this.registeredForMouseEvents) return;\n\t\tthis.registeredForMouseEvents = true;\n\t\tif (this.onMouseUp) this.registerForEvent('mouseup', this, 'onMouseUp', handleOnCapture);\n\t\tif (this.onMouseDown) this.registerForEvent('mousedown', this, 'onMouseDown', handleOnCapture);\n\t\tif (this.onMouseMove) this.registerForEvent('mousemove', this, 'onMouseMove', handleOnCapture);\n\t\tif (this.onSelectStart) this.registerForEvent('selectstart', this, 'onSelectStart', handleOnCapture);\n\t\tif (this.onMouseWheel) this.registerForEvent('mousewheel', this, 'onMouseWheel', handleOnCapture);\n\t},\n\tonMouseDown: function(evt) {\n\t\tevt.hand.removeOpenMenu(evt);\n\n\t\tevt.world.clickedOnMorph = this;\n\n\t\treturn true;\n\t},\n\tonMouseUp: function(evt) {\n\t\tvar world = evt.world,\n\t\t\tcompleteClick = world.clickedOnMorph === this;\n\n\t\tif (world.clickedOnMorph)\n\t\t\tworld.clickedOnMorph = null;\n\n\t\tvar draggedMorph = world.draggedMorph;\n\t\tif (draggedMorph) {\n\t\t\tworld.draggedMorph = null;\n\t\t\treturn draggedMorph.onDragEnd(evt);\n\t\t}\n\n\t\tif (completeClick && this.showsMorphMenu && evt.isRightMouseButtonDown() && this.showMorphMenu(evt))\n\t\t\treturn true;\n\n\t\tif (completeClick && this.halosEnabled && evt.isLeftMouseButtonDown() && evt.isCommandKey()) {\n\t\t\tthis.toggleHalos();\n\t\t\treturn true;\n\t\t}\n\n\t\t// if (this.grabbingEnabled && evt.isLeftMouseButtonDown() && this.grabMe(evt)) return true;\n\t\treturn this.droppingEnabled && this.dropOnMe(evt);\n\n\t\treturn true;\n\t},\n\n\tonMouseWheel: function(evt) {return true },\n\tonDragStart: function(evt) {},\n\tonDragEnd: function(evt) {},\n\tonDrag: function(evt) {},\n},\n'grabbing and dropping', {\n\tenableGrabbing: function() {\n\t\tthis.grabbingEnabled = true;\n\t},\n\tdisableGrabbing: function() { this.grabbingEnabled = false },\n\n\tenableDropping: function() {\n\t\tthis.droppingEnabled = true;\n\t},\n\tdisableDropping: function() { this.droppingEnabled = false },\n\tenableDragging: function() { this.draggingEnabled = true },\n\tdisableDragging: function() { this.draggingEnabled = false },\n\n\n\n\tdropOnMe: function(evt) {\n\t\tif (!this.droppingEnabled) return;\n\t\tif (evt.hand.submorphs.length == 0) return false;\n\t\tfor (var i = 0; i < this.submorphs.length; i++)\n\t\t\tif (this.submorphs[i].manualDropOnMe(evt)) return true;\n\t\tif (this.owner != evt.hand) {\n\t\t\talert('dropping on ' + this);\n\t\t\treturn evt.hand.dropContentsOn(this, evt);\n\t\t}\n\t\treturn false;\n\t},\n\tmanualDropOnMe: function(evt) {\n\t\t// this is a workaround. HTML events are not delivered to the required morph\n\t\t// under the hand when the hand already carries submorphs that overlap\n\t\t// var localPt = this.localize(evt.mousePoint);\n// alert('' + this.getBounds() + ' vs ' + this.localize(evt.mousePoint))\n\t\treturn this.fullContainsWorldPoint(evt.mousePoint) ? this.dropOnMe(evt) : false;\n\t},\n\tgrabMe: function(evt) {\n\t\tevt.hand.grabMorph(this, evt);\n\t\treturn true;\n\t},\n\tgetGrabShadow: function() {\n\t\tvar shadow = lively.morphic.Morph.makeRectangle(this.bounds());\n\t\tshadow.isGrabShadow = true;\n\t\tshadow.applyStyle({fill: Color.gray.darker()/*, fillOpacity: 0.3*/})\n\t\t// shadow.moveBy(pt(6,6));\n\t\treturn shadow;\n\t},\n\n});\n\nlively.morphic.Text.addMethods(\n'event managment', {\n\tignoreEvents: function($super) {\n\t\t$super();\n\t\tthis.renderContext().morphDispatch('ignoreTextEvents', this);\n\t},\n\tenableEvents: function($super) {\n\t\t$super();\n\t\tthis.renderContext().morphDispatch('enableTextEvents', this);\n\t},\n},\n'event handling', {\n\tonSelectStart: function(evt) {\n\t\tif (this.eventsAreIgnored) // FIXME why is that necessary, the event handler should not be enabled?\n\t\t\tevt.stop();\n\t\t// if (!this.bounds().containsPoint(evt.mousePoint))\n\t\t\t// evt.preventDefault();\n\t\t// just do the normal thing\n\t\treturn true;\n\t},\n\tonMouseWheel: function(evt) {\n\t\t// FIXME HTML specfic! Move to HTML module\n\t\tvar div = this.renderContext().textNode;\n\t\tif (evt.wheelDeltaX) {\n\t\t\tvar maxHorizontalScroll = div.scrollWidth - div.clientWidth,\n\t\t\t\tcurrentHorizontalScroll = div.scrollLeft;\n\t\t\tif (evt.wheelDeltaX < 0 && currentHorizontalScroll === maxHorizontalScroll)\n\t\t\t\tevt.stop();\n\t\t\tif (evt.wheelDeltaX > 0 && currentHorizontalScroll === 0)\n\t\t\t\tevt.stop();\n\t\t} else if (evt.wheelDeltaY) {\n\t\t\tvar maxVerticalScroll = div.scrollHeight - div.clientHeight,\n\t\t\t\tcurrentVerticalScroll = div.scrollTop;\n\t\t\tif (evt. wheelDeltaY < 0 && currentVerticalScroll === maxVerticalScroll)\n\t\t\t\tevt.stop();\n\t\t\tif (evt. wheelDeltaY > 0 && currentVerticalScroll === 0)\n\t\t\t\tevt.stop();\n\t\t}\n\t\treturn true;\n\t},\n});\nlively.morphic.World.addMethods(\n'event handling', {\n\tonMouseMove: function(evt) {\n\t\tevt.hand.move(evt);\n\t\tif (this.clickedOnMorph && this.clickedOnMorph.draggingEnabled) {\n\t\t\tthis.draggedMorph = this.clickedOnMorph;\n\t\t\tthis.clickedOnMorph = null;\n\t\t\tthis.draggedMorph.onDragStart && this.draggedMorph.onDragStart(evt);\n\t\t} else if (this.draggedMorph) {\n\t\t\tthis.draggedMorph.onDrag && this.draggedMorph.onDrag(evt);\n\t\t}\n\t\tevt.stop();\n\t\treturn true;\n\t},\n\tonSelectStart: function(evt) {\n\t\tevt.stop();\n\t\treturn true;\n\t},\n});\n\nlively.morphic.HTML.RenderContext.addMethods(\n'event handler management', {\n\tregisterHandlerForEvent: function(handler, eventSpec) { handler.registerHTMLAndSVG(eventSpec) },\n});\nlively.morphic.SVG.RenderContext.addMethods(\n'event handler management', {\n\tregisterHandlerForEvent: function(handler, eventSpec) { handler.registerHTMLAndSVG(eventSpec) },\n});\nlively.morphic.Canvas.RenderContext.addMethods(\n'event handler management', {\n\tregisterHandlerForEvent: function(handler, eventSpec) { handler.registerCANVAS(eventSpec) },\n});\n\nlively.morphic.Morph.subclass('lively.morphic.HandMorph',\n'settings', {\n\tstyle: {enableDropping: false, enableHalos: false},\n},\n'initializing', {\n\taddToWorld: function(world) {\n\t\tthis._world = world;\n\n\t\tthis.setFill(Color.red);\n\t\tthis.setBounds(new Rectangle(0,0, 2, 2));\n\n\t\t// world.registerForEvent('mousemove', this, 'onMouseMove')\n\t\t// world.registerForEvent('mousedown', this, 'onMouseDown')\n\t},\n},\n'accessing -- morphic relationship', {\n\tworld: function() { return this._world },\n\thand: function() { return this },\n},\n'event handling', {\n\tgrabMorph: function(morph, evt) {\n\t\treturn this.grabMorphs([morph], evt)\n\t},\n\tgrabMorphs: function(morphs, evt) {\n\t\tif (this.submorphs.length > 0) return;\n\t\tthis.carriesGrabbedMorphs = true;\n\t\tmorphs.forEach(function(morph) {\n\t\t\tvar shadow = morph.getGrabShadow();\n\t\t\tif (shadow) this.addMorph(shadow);\n\t\t\tmorph.disableEventHandler();\n\t\t\tthis.addMorph(morph);\n\t\t\tif (shadow) shadow.align(shadow.getPosition(), morph.getPosition().addXY(6,6))\n\t\t}, this)\n\t\tevt.stop();\n\t},\n\n\tdropContentsOn: function(morph, evt) {\n\t\tif (this.submorphs.length == 0) return false;\n\t\tthis.carriesGrabbedMorphs = false;\n\t\tthis.submorphs.clone().forEach(function(submorph) {\n\t\t\tif (submorph.isGrabShadow) {\n\t\t\t\tsubmorph.remove();\n\t\t\t\treturn\n\t\t\t}\n\t\t\tmorph.addMorph(submorph);\n\t\t\tsubmorph.enableEventHandler();\n\t\t});\n\t\tevt.stop();\n\t\treturn true;\n\t},\n},\n'menu', {\n\tremoveOpenMenu: function(evt) {\n\t\tvar menu = this.world().currentMenu;\n\t\tif (menu && !menu.bounds().containsPoint(evt.mousePoint))\n\t\t\tthis.world().currentMenu.remove();\n\t},\n},\n'moving', {\n\tmove: function(evt) {\n\t\tvar offsetX = 1, offsetY = 0,\n\t\t\tpos = pt((evt.pageX || evt.clientX) + offsetX, (evt.pageY || evt.clientY) + offsetY);\n\t\tthis.setPosition(pos);\n\t},\n});\n\n}) // end of module","shape":{"__isSmartRef__":true,"id":193},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":900,"_MaxTextHeight":860,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"scroll","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":196},"_Position":{"__isSmartRef__":true,"id":205},"textColor":{"__isSmartRef__":true,"id":63},"owner":{"__isSmartRef__":true,"id":58},"attributeConnections":[{"__isSmartRef__":true,"id":206}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"savedTextString":"module('lively.morphic.Widgets').requires('lively.morphic.Core', 'lively.morphic.Events', 'lively.morphic.Serialization').toRun(function() {\n\nlively.morphic.Morph.subclass('lively.morphic.Button',\n'settings', {\n\tstyle: {\n\t\tenableGrabbing: false,\n\t\tenableDropping: false,\n\t\tborderColor: Color.gray.darker(), \n\t\tborderWidth: 1, \n\t\tborderRadius: 5,\n\t\tfill: new lively.morphic.LinearGradient(\n\t\t\t[{offset: 0, color: Color.gray.mixedWith(Color.white, 0.2)}, \n\t\t\t{offset: 0.4, color: Color.gray.mixedWith(Color.white, 0.9)},\n\t\t\t{offset: 0.6, color: Color.gray.mixedWith(Color.white, 0.9)},\n\t\t\t{offset: 1, color: Color.gray.mixedWith(Color.white, 0.3)}], \n\t\t\t\"NorthSouth\")\n\t\t}\n},\n'initializing', {\n\tinitialize: function($super, bounds, labelString) {\n\t\t$super(this.defaultShape());\n\t\tif (bounds) this.setBounds(bounds);\n\n\t\tthis.value = false;\n\t\tthis.toggle = false;\n\t\tthis.isActive = true;\n\t\tthis.normalFill = this.getFill();\n\t\tthis.lighterFill = this.normalFill.lighter();\n\t\tthis.setFill(this.normalFill);\n\n\t\tthis.label = new lively.morphic.Text(this.getExtent().extentAsRectangle(), labelString);\n\t\tthis.label.applyStyle({borderWidth: 0, fill: null, fixedWidth: false})\n\t\tthis.addMorph(this.label);\n\t\tthis.label.beLabel();\n\t},\n},\n'accessing', {\n\tsetLabel: function(label) {\n\t\tthis.label.setTextString(label);\n\t\treturn this;\n\t},\n\tsetValue: function(bool) {\n\t\tthis.value = bool;\n\t\tif (bool || this.toggle) lively.bindings.signal(this, 'fire', bool);\n\t\tthis.changeAppearanceFor(bool);\n\t},\n\tsetExtent: function($super, extent) {\n\t\t// FIXME use layout! spaceFill!\n\t\t$super(extent);\n\t\tthis.label && this.label.setExtent(extent)\n\t},\n\n},\n'styling', {\n\tchangeAppearanceFor: function(value) {\n\t\tthis.setFill(value ? this.lighterFill : this.normalFill);\n\t},\n},\n'events', {\n\n\tonMouseDown: function($super, evt) {\n\t\tif (evt.isCommandKey()) return $super(evt);\n\t\tif (this.isActive && evt.isLeftMouseButtonDown() && !this.toggle) {\n\t\t\tthis.setValue(true);\n\t\t\treturn true;\n\t\t}\n\t\treturn $super(evt);\n\t},\n\tonMouseUp: function($super, evt) {\n\t\tif (evt.isCommandKey()) return $super(evt);\n\t\tif (this.isActive && evt.isLeftMouseButtonDown()) {\n\t\t\tvar newValue = this.toggle ? !this.value : false;\n\t\t\tthis.setValue(newValue);\n\t\t\treturn true;\n\t\t}\n\t\treturn $super(evt);\n\t},\n\tsimulateButtonClick: function() {\n\t\tthis.onMouseDown({isLeftMouseButtonDown: Functions.True});\n\t\tthis.onMouseUp({isLeftMouseButtonDown: Functions.True});\n\t},\n\n});\n\nlively.morphic.Text.subclass('lively.morphic.FrameRateMorph', {\n\n\tinitialize: function($super, shape) {\n\t\t// Steps at maximum speed, and gathers stats on ticks per sec and max latency\n\t\t$super(shape);\n\t\tthis.setTextString('FrameRateMorph')\n\t\tthis.reset(new Date());\n\t},\n\n\treset: function(date) {\n\t\tthis.lastTick = date.getSeconds();\n\t\tthis.lastMS = date.getTime();\n\t\tthis.stepsSinceTick = 0;\n\t\tthis.maxLatency = 0;\n\t},\n\n\tnextStep: function() {\n\t\tvar date = new Date();\n\t\tthis.stepsSinceTick++;\n\t\tvar nowMS = date.getTime();\n\t\tthis.maxLatency = Math.max(this.maxLatency, nowMS - this.lastMS);\n\t\tthis.lastMS = nowMS;\n\t\tvar nowTick = date.getSeconds();\n\t\tif (nowTick != this.lastTick) {\n\t\t\tthis.lastTick = nowTick;\n\t\t\tvar ms = (1000 / Math.max(this. stepsSinceTick,1)).roundTo(1);\n\t\t\tthis.setTextString(this.stepsSinceTick + \" frames/sec (\" + ms + \"ms avg),\\nmax latency \" + this.maxLatency + \" ms.\");\n\t\t\tthis.reset(date);\n\t\t}\n\t},\n\n\tstartSteppingScripts: function() { this.startStepping(1, 'nextStep'); }\n\n});\nlively.morphic.Box.subclass('lively.morphic.Menu',\n'settings', {\n\tstyle: {fill: Color.white},\n},\n'initializing', {\n\tinitialize: function($super, title, items) {\n\t\t$super(new Rectangle(0,0, 100, 10));\n\t\tthis.items = [];\n\t\tthis.itemMorphs = [];\n\n\t\t// setup title\n\t\tif (title) {\n\t\t\tthis.title = new lively.morphic.Text(new Rectangle(0,0, 100, 20), title).beLabel({fill: this.getFill(), fixedHeight: true});\n\t\t\tthis.title.align(this.title.bounds().bottomLeft(), pt(0,0));\n\t\t\tthis.addMorph(this.title)\n\t\t}\n\t\tif (items) this.addItems(items);\n\t},\n},\n'removing', {\n\tremove: function($super) {\n\t\tvar w = this.world();\n\t\tif (w && w.currentMenu === this) w.currentMenu = null;\n\t\t$super();\n\t},\n},\n'item management', {\n\tremoveAllItems: function() {\n\t\tthis.items = [];\n\t\tthis.itemMorphs = [];\n\t\tthis.submorphs.without(this.title).invoke('remove');\n\t},\n\n\tcreateMenuItems: function(items) {\n\t\tfunction createItem(string, value, idx, callback, callback2) {\n\t\t\treturn {\n\t\t\t\tisMenuItem: true,\n\t\t\t\tstring: string,\n\t\t\t\tvalue: value,\n\t\t\t\tidx: idx,\n\t\t\t\tonClickCallback: callback,\n\t\t\t\tonMouseOverCallback: callback2,\n\t\t\t}\n\t\t}\n\t\tvar result = [], self = this;\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\tvar item = items[i];\n\t\t\tif (item.isMenuItem) { item.idx = i; result.push(item); continue };\n\t\t\t// item = [name, callback]\n\t\t\tif (Object.isArray(item) && Object.isFunction(item[1])) {\n\t\t\t\tresult.push(createItem(String(item[0]), item[0], i, item[1]))\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// sub menu item = [name, [sub elements]]\n\t\t\tif (Object.isArray(item) && Object.isArray(item[1])) {\n\t\t\t\tvar name = item[0], subItems = item[1];\n\t\t\t\tresult.push(createItem(name, name, i, null, function(evt) {\n\t\t\t\t\tself.openSubMenu(evt, name, subItems) }));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// item = \"some string\"\n\t\t\tresult.push(createItem(String(item), item, i, function() { alert('clicked ' + this.idx) }));\n\t\t}\n\t\treturn result;\n\t},\n\n\taddItems: function(items) {\n\t\tthis.removeAllItems();\n\t\tthis.items = this.createMenuItems(items);\n\t\tvar y = 0, self = this;\n\t\tthis.items.forEach(function(item) {\n\t\t\tvar itemMorph = new lively.morphic.Text(new Rectangle(0, y, 100, 20), item.string);\n\t\t\tthis.itemMorphs.push(this.addMorph(itemMorph));\n\t\t\titemMorph.applyStyle({overflow: 'visible', fixedHeight: true, fixedWidth: false});\n\n\t\t\titemMorph.onMouseDown = function(evt) {\n\t\t\t\tif (!evt.isLeftMouseButtonDown()) return false;\n\t\t\t\titem.onClickCallback && item.onClickCallback(evt);\n\t\t\t\tself.remove(); // remove the menu\n\t\t\t\tevt.stop();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\titemMorph.registerForEvent('mouseover', itemMorph, 'onMouseOver');\n\t\t\titemMorph.onMouseOver = function(evt) {\n\t\t\t\titemMorph.owner.itemMorphs.invoke('setFill', null);\n\t\t\t\titemMorph.setFill(Color.blue)\n\t\t\t\tself.overItemMorph = itemMorph;\n\t\t\t\tself.removeSubMenu()\n\t\t\t\titem.onMouseOverCallback && item.onMouseOverCallback(evt);\n\t\t\t\tevt.stop();\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\ty += 20;\n\t\t}, this)\n\t\tthis.setExtent(pt(100, y))\n\t},\n\n},\n'sub menu', {\n\topenSubMenu: function(evt, name, items) {\n\t\tvar m = new lively.morphic.Menu(null, items);\n\t\tthis.addMorph(m);\n\t\tm.align(m.getPosition(), this.overItemMorph ? this.overItemMorph.bounds().topRight() : pt(0,0));\n\t\tthis.subMenu = m;\n\t\tm.ownerMenu = this;\n\t\treturn m;\n\t},\n\tremoveSubMenu: function() { if (this.subMenu) { var m = this.subMenu; m.ownerMenu = null; this.subMenu = null; m.remove() } },\n\tremoveOwnerMenu: function() { if (this.ownerMenu) { var m = this.ownerMenu; this.ownerMenu = null; m.remove() } },\n},\n'removal', {\n\tremove: function($super) {\n\t\t$super();\n\t\tthis.removeSubMenu();\n\t\tthis.removeOwnerMenu();\n\t},\n});\n\nObject.extend(lively.morphic.Menu, {\n\topenAtHand: function(title, items) {\n\t\treturn this.openAt(lively.morphic.World.current().firstHand().getPosition(), title, items);\n\t},\n\topenAt: function(pos, title, items) {\n\t\tvar world = lively.morphic.World.current(),\n\t\t\tmenu = new lively.morphic.Menu(title, items);\n\t\tmenu.setPosition(pos || pt(0,0));\n\t\tif (world.currentMenu) world.currentMenu.remove();\n\t\tworld.currentMenu = menu;\n\t\treturn world.addMorph(menu);\n\t},\n});\n\n\nlively.morphic.Morph.addMethods(\n'menu', {\n\tenableMorphMenu: function() {\n\t\tthis.showsMorphMenu = true;\n\t},\n\tdisableMorphMenu: function() { this.showsMorphMenu = false },\n\tonContextMenu: function(evt) {\n\t\t// we are invoking menus in onMouseDown\n\t\tevt.stop()\n\t},\n\n\n\tshowMorphMenu: function(evt) {\n\t\tlively.morphic.Menu.openAt(evt.mousePoint, this.toString(), this.morphMenuItems());\n\t\tevt.stop();\n\t\treturn true;\n\t},\n\tmorphMenuItems: function() {\n\t\tvar self = this, items = [];\n\t\titems.push(['duplicate', function(evt) {\n\t\t\tvar copy = self.copy();\n\t\t\t// FIXME, hand only grabs morph currently because click event on menu is also a grab!!!\n\t\t\t// self.owner.addMorph(copy);\n\t\t\tevt.hand.grabMorph(copy, evt);\n\t\t}])\n\t\treturn items;\n\t},\n\n});\n\nlively.morphic.World.addMethods(\n'menu', {\n\tmorphMenuItems: function() {\n\t\tvar items = [];\n\t\titems.push(\n\t\t\t['Tools', [\n\t\t\t\t['Workspace', this.addTextWindow.bind(this).curry({title: 'Workspace', content: 'nothing'})],\n\t\t\t\t['Text editor', function() { new lively.morphic.TextEditor().openIn(this) }.bind(this)]\n\t\t\t]],\n\t\t\t['save world', this.interactiveSaveWorldAs.bind(this)])\n\t\treturn items;\n\t},\n});\n\nlively.morphic.List.addMethods(\n'documentation', {\n\tconnections: ['selection', 'itemList', 'selectedLineNo'],\n},\n'settings', {\n\tstyle: {borderColor: Color.black, borderWidth: 0, fill: Color.gray.lighter().lighter()},\n},\n'initializing', {\n\tinitialize: function($super, bounds, optItems) {\n\t\t$super(bounds);\n\t\tthis.itemList = [];\n\t\tthis.selection = null;\n\t\tthis.selectedLineNo = -1;\n\t\tif (optItems) this.updateList(optItems);\n\t},\n},\n'accessing', {\n\tsetExtent: function($super, extent) {\n\t\t$super(extent);\n\t\tthis.resizeList();\n\t},\n},\n'list interface', {\n\tupdateList: function(items) {\n\t\tthis.itemList = items;\n\t\tvar itemStrings = items.collect(function(ea) { return ea.string || String(ea) });\n\t\tthis.renderContext().morphDispatch('updateListContent', this, itemStrings);\n\t},\n\n},\n'FROM HTML PROTOTYPE', {\n\n\n\tonMouseDown: function($super, evt) {\n\t\tif (evt.isCommandKey()) return $super(evt);\n\t\tvar idx = this.renderContext().morphDispatch('getItemIndexFromEvent', this, evt);\n\t\tthis.selectAt(idx)\n\t\tevt.stopPropagation()\n\t\treturn idx > -1;\n\t},\n\n\n\n\tselectAt: function(idx) {\n\t\tthis.renderContext().morphDispatch('selectAt', this, idx);\n\t\tvar item = this.itemList[idx];\n\t\tthis.selection = item && item.value ? item.value : item;\n\t\tthis.selectedLineNo = idx;\n\t},\n},\n'private list functions', {\n\tresizeList: function(idx) {\n\t\tthis.renderContext().morphDispatch('resizeList', this);\n\t},\n});\n\nlively.morphic.Morph.subclass(\"lively.morphic.WindowControl\",\n'documentation', {\n documentation: \"Event handling for Window morphs\",\n},\n'settings and state', {\n style: {borderWidth: 0, strokeOpacity: 0},\n focus: pt(0.4, 0.2),\n\tconnections: ['HelpText', 'fire'],\n},\n'initializing', {\n\tinitialize: function($super, rect, inset, labelString, labelOffset) {\n\t\t$super(new lively.morphic.Shapes.Ellipse(rect.insetBy(inset)));\n \t\tif (labelString) {\n\t\t\tthis.label = new lively.morphic.Text(new Rectangle(0,0,20,20), labelString).beLabel();\n\t\t\tthis.label.linkToStyles('titleBar_button_label');\n\t\t\tthis.addMorph(this.label);\n\t\t\tlabelOffset = labelOffset || pt(-5,-5);\n\t\t\tthis.label.setPosition(labelOffset);\n\t\t\tthis.label.setVisible(false);\n\t\t};\n\t\treturn this;\n\t},\n});\n\n\nlively.morphic.Box.subclass(\"lively.morphic.TitleBar\", \n'documentation', {\n\tdocumentation: \"Title bar for lively.morphic.Window\",\n},\n'properties', {\n\tcontrolSpacing: 3,\n\tbarHeight: 22,\n\tshortBarHeight: 15,\n\tstyle: {borderWidth: 0, fill: null, strokeOpacity: 0},\n\tlabelStyle: { borderRadius: 8, padding: Rectangle.inset(6, 2) },\n},\n'intitialize', {\n\tinitialize: function($super, headline, windowWidth, windowMorph, optSuppressControls) {\n\t\tif (optSuppressControls) { // for dialog boxes\n\t\t\tthis.suppressControls = true;\n\t\t\tthis.barHeight = this.shortBarHeight;\n\t\t}\n\t\tvar bounds = new Rectangle(0, 0, windowWidth, this.barHeight);\n\t\n\t\t$super(bounds);\n\t\n\t\tvar contentMorph = lively.morphic.Morph.makeRectangle(bounds);\n\t\tthis.addMorph(contentMorph);\n\t\tcontentMorph.linkToStyles([\"titleBar\"]);\n\t\tthis.ignoreEvents();\n\t\tcontentMorph.ignoreEvents();\n\t\tthis.contentMorph = contentMorph;\n\t\n\t\tthis.windowMorph = windowMorph;\n\t\t\n\t\t// Note: Layout of submorphs happens in adjustForNewBounds (q.v.)\n\t\tvar label;\n\t\tif (headline instanceof lively.morphic.Text) {\n\t\t\tlabel = headline;\n\t\t} else if (headline != null) { // String\n\t\t\t// wild guess headlineString.length * 2 * font.getCharWidth(' ') + 2;\n\t\t\tvar width = headline.length * 8; \n\t\t\tlabel = new lively.morphic.Text(new Rectangle(0, 0, width, this.barHeight), headline).beLabel();\n\t\t}\n\t\tlabel.applyStyle(this.labelStyle);\n\t\tthis.label = this.addMorph(label);\n\t\tif (!this.suppressControls) {\n\t\t\tvar cell = new Rectangle(0, 0, this.barHeight, this.barHeight);\n\n\t\t\tthis.closeButton = this.addMorph(\n\t\t\t\tnew lively.morphic.WindowControl(cell, this.controlSpacing, \"X\", pt(-4,-6)));\n\t\t\tthis.closeButton.linkToStyles('titleBar_closeButton');\n\t\t\tthis.menuButton = this.addMorph(\n\t\t\t\tnew lively.morphic.WindowControl(cell, this.controlSpacing, \"M\", pt(-5,-6)));\n\t\t\tthis.menuButton.linkToStyles('titleBar_menuButton');\n\t\t\tthis.collapseButton = this.addMorph(\n\t\t\t\tnew lively.morphic.WindowControl(cell, this.controlSpacing, \"–\", pt(-3,-6)));\n\t\t\tthis.collapseButton.linkToStyles('titleBar_collapseButton');\n\n\t\t\tthis.connectButtons(windowMorph);\n\t\t} \n\t\tthis.adjustForNewBounds(); // This will align the buttons and label properly\n\n\n\t\treturn this;\n\t},\n\t\n\tconnectButtons: function(w) {\n\t\tif (this.suppressControls) return;\n\t\tconnect(this.closeButton, 'getHelpText', w, 'getCloseHelp')\n\t\tconnect(this.closeButton, 'fire', w, 'initiateShutdown')\n\t\tconnect(this.menuButton, 'getHelpText', w, 'getMenuHelp')\n\t\tconnect(this.menuButton, 'fire', w, 'showTargetMorphMenu')\n\t\tconnect(this.collapseButton, 'getHelpText', w, 'getCollapseHelp')\n\t\tconnect(this.collapseButton, 'fire', w, 'toggleCollapse')\n\n\t\t// this.closeButton.plugTo(w, {getHelpText: '->getCloseHelp', fire: '->initiateShutdown'});\n\t\t// this.menuButton.plugTo(w, {getHelpText: '->getMenuHelp', fire: '->showTargetMorphMenu'});\n\t\t// this.collapseButton.plugTo(w, {getHelpText: '->getCollapseHelp', fire: '->toggleCollapse'});\n\t},\n\n},\n'layouting', {\n\tadjustForNewBounds: function() {\n\t\tvar innerBounds = this.innerBounds();\n\t\tvar sp = this.controlSpacing;\n\t\t// $super();\n\t\tvar loc = this.innerBounds().topLeft().addXY(sp, sp);\n\t\tvar l0 = loc;\n\t\tvar dx = pt(this.barHeight - sp, 0);\n\t\tif (this.menuButton) { \n\t\t\tthis.menuButton.setPosition(loc); \n\t\t\tloc = loc.addPt(dx); \n\t\t}\n\t\tif (this.label) {\n\t\t\t// this.label.setPosition(pt(22,3))\n\t\t\tthis.label.align(this.label.bounds().topCenter(), this.innerBounds().topCenter());\n\t\t\tif (this.label.bounds().topLeft().x < loc.x) {\n\t\t\t\tthis.label.align(this.label.bounds().topLeft(), loc.addXY(0,-3));\n\t\t\t}\n\t\t}\n\t\tif (this.closeButton) { \n\t\t\tloc = this.innerBounds().topRight().addXY(-sp - this.closeButton.shape.getBounds().width, sp);\n\t\t\tthis.closeButton.setPosition(loc); \n\t\t\tloc = loc.subPt(dx); \n\t\t}\n\t\tif (this.collapseButton) { \n\t\t\tthis.collapseButton.setPosition(loc); \n\t\t\t//loc = loc.subPt(dx); \n\t\t};\n\t\t\n\t\tvar style = this.styleNamed(\"titleBar\");\n\t\tvar w = style.borderWidth || 1;\n\t\tvar r = style.borderRadius || 3;\n\t\tthis.contentMorph.setBounds(new Rectangle(w/2, w/2, innerBounds.width, this.barHeight + r));\n\t},\n},\n'window', {\n\n\thighlight: function(trueForLight) {\n\t\tif (trueForLight) {\n\t\t\tthis.label.linkToStyles(['titleBar_label_highlight']);\n\t\t\tif (this.closeButton) this.closeButton.linkToStyles('titleBar_closeButton_highlight');\n\t\t\tif (this.menuButton) this.menuButton.linkToStyles('titleBar_menuButton_highlight');\n\t\t\tif (this.collapseButton) this.collapseButton.linkToStyles('titleBar_collapseButton_highlight');\n\n\t\t} else {\n\t\t\tthis.label.linkToStyles(['titleBar_label']);\n\t\t\tif (this.closeButton) this.closeButton.linkToStyles('titleBar_closeButton');\n\t\t\tif (this.menuButton) this.menuButton.linkToStyles('titleBar_menuButton');\n\t\t\tif (this.collapseButton) this.collapseButton.linkToStyles('titleBar_collapseButton');\n\t\t} \n\t},\n\t\n\tsetTitle: function(string) {\n\t\tstring = String(string).truncate(90);\n\t\tthis.label.setTextString(string);\n\t\t// FIXME too slow!!!\n\t\t// this.adjustForNewBounds(); // This will align the buttons and label properly\n\t},\n\n\tgetTitle: function(string) { return this.label.textString },\n\n});\n\n\nlively.morphic.Morph.subclass('lively.morphic.Window',\n'documentation', {\n documentation: \"Full-fledged windows with title bar, menus, etc.\",\n},\n'settings and state', {\n state: 'expanded',\n style: {borderWidth: 0, fill: null, borderRadius: 0, strokeOpacity: 0},\n},\n'initializing', {\n initialize: function($super, targetMorph, titleString, optSuppressControls) {\n\t\t$super(new lively.morphic.Shapes.Rectangle());\n\n\t\tvar bounds = targetMorph.bounds();\n\t\tvar titleBar = this.makeTitleBar(titleString, bounds.width, optSuppressControls)\n\t\t\ttitleHeight = titleBar.bounds().height;\n\t\tthis.setBounds(bounds.withHeight(bounds.height + titleHeight));\n\t\tthis.targetMorph = this.addMorph(targetMorph);\n\t\tthis.titleBar = this.addMorph(titleBar);\n\t\tthis.contentOffset = pt(0, titleHeight - titleBar.getBorderWidth()/2); // FIXME: hack\n\t\ttargetMorph.setPosition(this.contentOffset);\n\t\t// this.closeAllToDnD();\n\n\t\tthis.collapsedTransform = null;\n\t\tthis.collapsedExtent = null;\n\t\tthis.expandedTransform = null;\n\t\tthis.expandedExtent = null;\n\t\tthis.ignoreEventsOnExpand = false;\n\n\t\treturn this;\n\t},\n\n},\n'window behavior', { \n makeTitleBar: function(titleString, width, optSuppressControls) {\n // Overridden in TabbedPanelMorph\n return new lively.morphic.TitleBar(titleString, width, this, optSuppressControls);\n },\n\n\tsetTitle: function(string) { this.titleBar.setTitle(string) },\n},\n'collapsing', {\n\ttoggleCollapse: function() {\n\t\treturn this.isCollapsed() ? this.expand() : this.collapse();\n\t},\n \n collapse: function() { \n if (this.isCollapsed()) return;\n this.expandedTransform = this.getTransform();\n\t\tthis.expandedExtent = this.getExtent();\n\t\tthis.expandedPosition = this.getPosition();\n\t\tthis.ignoreEventsOnExpand = this.targetMorph.areEventsIgnored();\n\t\tthis.targetMorph.ignoreEvents(); // unconditionally\n\t\tthis.targetMorph.setVisible(false);\n\t\tvar finCollapse = function () {\n \tthis.state = 'collapsed'; // Set it now so setExtent works right\n\t\t\tif (this.collapsedTransform) this.setTransform(this.collapsedTransform);\n \tif (this.collapsedExtent) this.setExtent(this.collapsedExtent);\n\t\t\tthis.shape.setBounds(this.titleBar.bounds());\n\t\t\tthis.layoutChanged();\n \t// this.titleBar.highlight(false);\n\t\t}.bind(this);\n\t\tif (this.collapsedPosition && this.collapsedPosition.dist(this.position()) > 100)\n\t\t\tthis.animatedInterpolateTo(this.collapsedPosition, 5, 50, finCollapse);\n\t\telse finCollapse();\n },\n \n expand: function() {\n if (!this.isCollapsed()) return;\n this.collapsedTransform = this.getTransform();\n this.collapsedExtent = this.innerBounds().extent();\n\t\tthis.collapsedPosition = this.position();\n var finExpand = function () {\n\t\t\tthis.state = 'expanded'; // Set it now so setExtent works right\n\t\t\t// MR: added a fix for collapsed, save windows, made it optional\n\t\t\tif (this.expandedTransform)\n\t\t\t\tthis.setTransform(this.expandedTransform); \n\t\t\tif (this.expandedExtent) {\n\t\t\t\tthis.setExtent(this.expandedExtent);\n\t\t\t\tthis.shape.setBounds(this.expandedExtent.extentAsRectangle());\n\t\t\t}\n\t\t\tthis.targetMorph.setVisible(true);\n\t\t\t// enable events if they weren't disabled in expanded form\n\t\t\tif (!this.ignoreEventsOnExpand)\n\t\t\t\tthis.targetMorph.enableEvents();\n\t\t\tthis.world().addMorphFront(this); // Bring this window forward if it wasn't already\n\t\t\tthis.layoutChanged();\n\t\t}.bind(this);\n\t\tif (this.expandedPosition && this.expandedPosition.dist(this.position()) > 100)\n\t\t\tthis.animatedInterpolateTo(this.expandedPosition, 5, 50, finExpand);\n\t\telse finExpand();\n },\n\n isCollapsed: function() { return this.state === 'collapsed' },\n},\n'window', {\n \n initiateShutdown: function() {\n if (this.isShutdown()) return;\n this.targetMorph.shutdown(); // shutdown may be prevented ...\n this.remove();\n this.state = 'shutdown'; // no one will ever know...\n return true;\n },\n \n showTargetMorphMenu: function(evt) { \n var tm = this.targetMorph.morphMenu(evt);\n tm.openIn(this.world(), evt.mousePoint, false, this.targetMorph.toString()); \n },\n},\n'menu', {\n\tmorphMenu: function($super, evt) {\n\t\tvar menu = $super(evt), window = this, world = this.world();\n\t\tif (menu)\n\t\t\tmenu.addItem([\n\t\t\t\t\"change title\", function() {\n\t\t\t\t\tif (!world) return;\n\t\t\t\t\tworld.prompt('new name', function(input) { window.setTitle(input) });\t\n\t\t\t\t}\n\t\t\t]);\n\t\treturn menu;\n\t},\n},\n'debugging', {\n toString: function($super) {\n return $super() + ' ' + this.titleBar.getTitle();\n },\n});\n\nObject.subclass('lively.morphic.App',\n'properties', {\n\tinitialViewExtent: pt(350, 200),\n},\n'initializing', {\n\tbuildView: function(extent) {\n\t\tthrow new Error('buildView not implemented!')\n\t},\n},\n'accessing', {\n\tgetInitialViewExtent: function(world, hint) {\n\t\treturn hint || this.initialViewExtent;\n\t},\n},\n'opening', {\n\topenIn: function(world, pos) {\n\t\tvar view = this.buildView(this.getInitialViewExtent(world));\n\t\tview.ownerApp = this; // for debugging\n\t\tthis.view = view;\n\t\treturn world.addMorph(view);\n\t},\n},\n'removing', {\n\tremoveTopLevel: function() {\n\t\tif (this.view) this.view.remove();\n\t},\n});\nlively.morphic.App.subclass('lively.morphic.AbstractDialog',\n'documentation', {\n\tconnections: ['result'],\n},\n'properties', {\n\tinitialViewExtent: pt(300, 90),\n\tinset: 4,\n},\n'initializing', {\n\tinitialize: function(message, callback) {\n\t\tthis.result = null;\n\t\tthis.message = message || '?';\n\t\tif (callback) this.setCallback(callback);\n\t},\n\tbuildPanel: function(bounds) {\n\t\tthis.panel = new lively.morphic.Box(bounds);\n\t\tthis.panel.applyStyle({\n\t\t\tfill: Color.rgb(210,210,210),\n\t\t\tborderColor: Color.gray.darker(), \n\t\t\tborderWidth: 1,\n\t\t})\n\t},\n\tbuildLabel: function() {\n\t\tvar bounds = new Rectangle(this.inset, this.inset, this.panel.getExtent().x - 2*this.inset, 20);\n\t\tthis.label = this.panel.addMorph(new lively.morphic.Text(bounds, this.message));\n\t\tthis.label.beLabel();\n\t},\n\tbuildCancelButton: function() {\n\t\tvar bounds = new Rectangle(0,0, 60, 30),\n\t\t\tbtn = new lively.morphic.Button(bounds, 'Cancel');\n\t\tbtn.align(btn.bounds().bottomRight().addXY(this.inset, this.inset), this.panel.bounds().bottomRight())\n\t\tthis.cancelButton = this.panel.addMorph(btn);\n\t\tlively.bindings.connect(btn, 'fire', this, 'removeTopLevel')\n\t},\n\tbuildOKButton: function() {\n\t\tvar bounds = new Rectangle(0,0, 60, 30),\n\t\t\tbtn = new lively.morphic.Button(bounds, 'OK');\n\t\tbtn.align(btn.bounds().bottomRight().addXY(this.inset, 0), this.cancelButton.bounds().bottomLeft())\n\t\tthis.okButton = this.panel.addMorph(btn);\n\t\tlively.bindings.connect(btn, 'fire', this, 'removeTopLevel')\n\t},\n\tbuildView: function(extent) {\n\t\tthis.buildPanel(extent.extentAsRectangle());\n\t\tthis.buildLabel();\n\t\tthis.buildCancelButton();\n\t\tthis.buildOKButton();\n\t\treturn this.panel;\n\t},\n},\n'callbacks', {\n\tsetCallback: function(func) {\n\t\tthis.callback = func;\n\t\tconnect(this, 'result', this, 'triggerCallback')\n\t},\n\ttriggerCallback: function(resultBool) {\n\t\tthis.removeTopLevel();\n\t\tif (this.callback) this.callback(resultBool);\n\t},\n});\n\nlively.morphic.AbstractDialog.subclass('lively.morphic.ConfirmDialog',\n'properties', {\n\tinitialViewExtent: pt(240, 70),\n},\n'initializing', {\n\tbuildView: function($super, extent) {\n\t\tvar panel = $super(extent);\n\n\t\tlively.bindings.connect(this.cancelButton, 'fire', this, 'result', {\n\t\t\tconverter: function() { return false }});\n\t\tlively.bindings.connect(this.okButton, 'fire', this, 'result', {\n\t\t\tconverter: function() { return true }});\n\n\t\treturn panel;\n\t},\n});\nlively.morphic.AbstractDialog.subclass('lively.morphic.PromptDialog',\n'initializing', {\n\tinitialize: function($super, label, callback, defaultInput) {\n\t\t$super(label, callback, defaultInput);\n\t\tthis.defaultInput = defaultInput;\n\t},\n\tbuildTextInput: function(bounds) {\n\t\tvar input = new lively.morphic.Text(this.label.bounds(), this.defaultInput || '');\n\t\tinput.align(input.getPosition(), this.label.bounds().bottomLeft());\n\t\tthis.inputText = this.panel.addMorph(input);\n\t},\n\n\tbuildView: function($super, extent) {\n\t\tvar panel = $super(extent);\n\t\tthis.buildTextInput();\n\n\t\tlively.bindings.connect(this.cancelButton, 'fire', this, 'result', {\n\t\t\tconverter: function() { return null }});\n\t\tlively.bindings.connect(this.okButton, 'fire', this, 'result', {\n\t\t\tconverter: function() { return this.targetObj.inputText.textString }})\n\n\t\treturn panel;\n\t},\n\n});\n\n\nlively.morphic.App.subclass('lively.morphic.WindowedApp',\n'opening', {\n\topenIn: function(world, pos) {\n\t\tvar view = this.buildView(this.getInitialViewExtent(world)),\n\t\t\twindow = world.addFramedMorph(view, this.defaultTitle);\n\t\tview.ownerApp = this; // for debugging\n\t\tthis.view = window;\n\t\treturn window;\n\t},\n});\nlively.morphic.WindowedApp.subclass('lively.morphic.TextEditor',\n'settings', {\n\tdefaultTitle: 'TextEditor',\n\tinitialViewExtent: pt(900, 900),\n},\n'initializing', {\n\tbuildView: function(extent) {\n\t\tvar panel = lively.morphic.Morph.makeRectangle(0,0, extent.x, extent.y);\n\t\tpanel.applyStyle({fill: Color.gray.lighter(2)});\n\n\t\tvar bounds;\n\n\t\tbounds = new Rectangle(0,0, extent.x, 20);\n\t\tvar urlText = new lively.morphic.Text(bounds, URL.source.toString());\n\t\turlText.beInputLine();\n\t\tpanel.urlText = panel.addMorph(urlText);\n\t\tconnect(urlText, 'savedTextString', this, 'setCurrentURL');\n\t\tconnect(this, 'currentURL', this, 'loadFile');\n\n\t\tbounds = new Rectangle(0, bounds.height, extent.x/3, 20);\n\t\tvar saveBtn = new lively.morphic.Button(bounds, 'save');\n\t\tpanel.addMorph(saveBtn);\n\t\tconnect(saveBtn, 'fire', this, 'saveFile');\n\n\t\tbounds = rect(bounds.topRight(), bounds.bottomRight().addXY(extent.x/3, 0));\n\t\tvar loadBtn = new lively.morphic.Button(bounds, 'load')\n\t\tpanel.addMorph(loadBtn);\n\t\tconnect(loadBtn, 'fire', this, 'loadFile');\n\n\t\tbounds = rect(bounds.topRight(), bounds.bottomRight().addXY(extent.x/3, 0));\n\t\tvar removeBtn = new lively.morphic.Button(bounds, 'remove')\n\t\tpanel.addMorph(removeBtn)\n\t\tconnect(removeBtn, 'fire', this, 'removeFile');\n\n\t\tbounds = rect(pt(0, bounds.maxY()), panel.bounds().bottomRight());\n\t\tvar contentMorph = new lively.morphic.Text(bounds, 'emtpy');\n\t\tcontentMorph.applyStyle({overflow: 'scroll', fixedHeight: true});\n\t\tpanel.contentMorph = panel.addMorph(contentMorph);\n\t\tconnect(contentMorph, 'savedTextString', this, 'saveFile');\n\n\t\tthis.panel = panel;\n\t\treturn panel;\n\t},\n},\n'network', {\n\tsetCurrentURL: function(urlString) {\n\t\tthis.currentURL = new URL(urlString);\n\t\talert(this.currentURL);\n\t},\n\tcreateWebResource: function() { return new WebResource(this.getURL()) },\n\tgetURL: function() { return new URL(this.currentURL || this.panel.urlText.textString) },\n},\n'file functions', {\n\tgetEditorContent: function() { return this.panel.contentMorph.textString },\n\tsaveFile: function() {\n\t\tvar webR = this.createWebResource();\n\t\twebR\n\t\t\t.statusMessage('Successfully saved ' + webR.getURL(), 'Error saving ' + webR.getURL(), true)\n\t\t\t.put(this.getEditorContent());\n\t},\t\n\tloadFile: function() {\n\t\tvar res = this.createWebResource().forceUncached();\n\t\tres.get();\n\t\tif (res.isExisting) {\n\t\t\tthis.panel.contentMorph.setTextString(res.content);\n\t\t\treturn\n\t\t} else if (res.getURL().isLeaf()) {\n\t\t\tthis.askToCreateFile(res);\n\t\t} else {\n\t\t\talert('Cannot open/create document at ' + res.getURL());\n\t\t}\n\t},\n\taskToCreateFile: function(webResource) {\n\t\tvar question = 'No file ' + webResource.getURL() + ' exists...! Create it?';\n\t\tthis.panel.world().confirm(question, function(input) {\n\t\t\tif (!input) return;\n\t\t\twebResource.statusMessage(\n\t\t\t\t'Successfully created ' + webResource.getURL().filename(),\n\t\t\t\t'Cannot create ' + webResource.getURL().filename(), true)\n\t\t\twebResource.put('empty file');\n\t\t\tthis.loadFile();\n\t\t}.bind(this));\n\t},\n\tremoveFile: function() {\n\t\tvar webR = this.createWebResource();\n\t\tif (!webR.exists()) return;\n\t\twebR.statusMessage('Successfully deleted','Error deleting', true).del();\n\t},\n});\n\n\nlively.morphic.World.addMethods(\n'positioning', {\n\tpositionForNewMorph: function (newMorph, relatedMorph) {\n\t\t// this should be much smarter than the following:\n\t\tif (relatedMorph)\n\t\t\treturn relatedMorph.bounds().topLeft().addPt(pt(5, 0));\n\t\tvar pos = this.firstHand().getPosition();\n\t\tif (!newMorph) return pos;\n\t\tvar viewRect = this.getBounds(), // this.windowBounds(),\n\t\t\tnewMorphBounds = pos.extent(newMorph.getExtent());\n\t\treturn viewRect.containsRect(newMorphBounds) ?\n\t\t\tpos : viewRect.center().subPt(newMorphBounds.extent().scaleBy(0.5));\n\t},\n},\n'windows', {\n\taddFramedMorph: function(morph, title, optLoc, optSuppressControls) {\n\t\tvar w = this.addMorph(new lively.morphic.Window(morph, title || 'Window', optSuppressControls));\n\t\tw.setPosition(optLoc || this.positionForNewMorph(morph));\n\t\treturn w;\n\t},\n\n\taddTextWindow: function(spec) {\n\t\t// FIXME: typecheck the spec \n\t\tif (Object.isString(spec.valueOf())) spec = {content: spec}; // convenience\n\t\tvar extent = spec.extent || pt(500, 200),\n\t\t\ttextMorph = new lively.morphic.Text(extent.extentAsRectangle(), spec.content || \"\"),\n\t\t\tpane = this.internalAddWindow(textMorph, spec.title, spec.position);\n\t\ttextMorph.applyStyle({overflow: 'auto', fixedWidth: true, fixedHeight: true})\n\t\treturn pane;\n\t},\n\n\tinternalAddWindow: function(morph, title, pos) {\n\t\tmorph.applyStyle({borderWidth: 2, borderColor: Color.black});\n\t\tpos = pos || this.firstHand().getPosition().subPt(pt(5, 5));\n\t\tvar win = this.addFramedMorph(morph, String(title || \"\"), pos);\n\t\treturn morph;\n\t},\n},\n'dialogs', {\n\topenDialog: function(dialog) {\n\t\tvar window = dialog.openIn(this, pt(0,0));\n\t\twindow.setPosition(this.positionForNewMorph(window));\n\t\treturn dialog;\n\t},\n\tconfirm: function (message, callback) {\n\t\treturn this.openDialog(new lively.morphic.ConfirmDialog(message, callback));\n\t},\n\tprompt: function (message, callback, defaultInput) {\n\t\treturn this.openDialog(new lively.morphic.PromptDialog(message, callback, defaultInput))\n\t},\n});\n\n\n}) // end of module","showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"193":{"position":{"__isSmartRef__":true,"id":194},"extent":{"__isSmartRef__":true,"id":195},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":64},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"194":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"195":{"x":900,"y":860,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"196":{"morph":{"__isSmartRef__":true,"id":192},"dispatchTable":{"__isSmartRef__":true,"id":197},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"197":{"mouseup":{"__isSmartRef__":true,"id":198},"mousedown":{"__isSmartRef__":true,"id":199},"selectstart":{"__isSmartRef__":true,"id":200},"mousewheel":{"__isSmartRef__":true,"id":201},"keydown":{"__isSmartRef__":true,"id":202},"keyup":{"__isSmartRef__":true,"id":203},"keypress":{"__isSmartRef__":true,"id":204}},"198":{"type":"mouseup","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"199":{"type":"mousedown","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"200":{"type":"selectstart","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"201":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"202":{"type":"keydown","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"203":{"type":"keyup","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"204":{"type":"keypress","target":{"__isSmartRef__":true,"id":192},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"205":{"x":0,"y":40,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"206":{"sourceObj":{"__isSmartRef__":true,"id":192},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":76},"targetMethodName":"saveFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"207":{"position":{"__isSmartRef__":true,"id":208},"extent":{"__isSmartRef__":true,"id":209},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":210},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"208":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"209":{"x":900,"y":900,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"210":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"211":{"morph":{"__isSmartRef__":true,"id":58},"dispatchTable":{"__isSmartRef__":true,"id":212},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"212":{"mouseup":{"__isSmartRef__":true,"id":213},"mousedown":{"__isSmartRef__":true,"id":214},"mousewheel":{"__isSmartRef__":true,"id":215}},"213":{"type":"mouseup","target":{"__isSmartRef__":true,"id":58},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"214":{"type":"mousedown","target":{"__isSmartRef__":true,"id":58},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"215":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":58},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"216":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"217":{"submorphs":[{"__isSmartRef__":true,"id":218},{"__isSmartRef__":true,"id":229},{"__isSmartRef__":true,"id":244},{"__isSmartRef__":true,"id":270},{"__isSmartRef__":true,"id":296}],"scripts":[],"id":1219,"shape":{"__isSmartRef__":true,"id":322},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":325},"_Position":{"__isSmartRef__":true,"id":330},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":218},"windowMorph":{"__isSmartRef__":true,"id":57},"label":{"__isSmartRef__":true,"id":229},"closeButton":{"__isSmartRef__":true,"id":244},"menuButton":{"__isSmartRef__":true,"id":270},"collapseButton":{"__isSmartRef__":true,"id":296},"owner":{"__isSmartRef__":true,"id":57},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"218":{"submorphs":[],"scripts":[],"id":1220,"shape":{"__isSmartRef__":true,"id":219},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":223},"_Position":{"__isSmartRef__":true,"id":228},"owner":{"__isSmartRef__":true,"id":217},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"219":{"position":{"__isSmartRef__":true,"id":220},"extent":{"__isSmartRef__":true,"id":221},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":222},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"220":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"221":{"x":900,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"222":{"r":0,"g":0,"b":0.8,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"223":{"morph":{"__isSmartRef__":true,"id":218},"dispatchTable":{"__isSmartRef__":true,"id":224},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"224":{"mouseup":{"__isSmartRef__":true,"id":225},"mousedown":{"__isSmartRef__":true,"id":226},"mousewheel":{"__isSmartRef__":true,"id":227}},"225":{"type":"mouseup","target":{"__isSmartRef__":true,"id":218},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"226":{"type":"mousedown","target":{"__isSmartRef__":true,"id":218},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"227":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":218},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"228":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"229":{"submorphs":[],"scripts":[],"id":1221,"cachedTextString":"TextEditor","shape":{"__isSmartRef__":true,"id":230},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":233},"_Position":{"__isSmartRef__":true,"id":242},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":243},"owner":{"__isSmartRef__":true,"id":217},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"230":{"position":{"__isSmartRef__":true,"id":231},"extent":{"__isSmartRef__":true,"id":232},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"231":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"232":{"x":80,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"233":{"morph":{"__isSmartRef__":true,"id":229},"dispatchTable":{"__isSmartRef__":true,"id":234},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"234":{"mouseup":{"__isSmartRef__":true,"id":235},"mousedown":{"__isSmartRef__":true,"id":236},"selectstart":{"__isSmartRef__":true,"id":237},"mousewheel":{"__isSmartRef__":true,"id":238},"keydown":{"__isSmartRef__":true,"id":239},"keyup":{"__isSmartRef__":true,"id":240},"keypress":{"__isSmartRef__":true,"id":241}},"235":{"type":"mouseup","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"236":{"type":"mousedown","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"237":{"type":"selectstart","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"238":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"239":{"type":"keydown","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"240":{"type":"keyup","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"241":{"type":"keypress","target":{"__isSmartRef__":true,"id":229},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"242":{"x":410,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"243":{"x":6,"y":2,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"244":{"submorphs":[{"__isSmartRef__":true,"id":245}],"scripts":[],"id":1222,"shape":{"__isSmartRef__":true,"id":259},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":262},"label":{"__isSmartRef__":true,"id":245},"owner":{"__isSmartRef__":true,"id":217},"attributeConnections":[{"__isSmartRef__":true,"id":267},{"__isSmartRef__":true,"id":268}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":269},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"245":{"submorphs":[],"scripts":[],"id":1223,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":246},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":249},"_Position":{"__isSmartRef__":true,"id":258},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":244},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"246":{"position":{"__isSmartRef__":true,"id":247},"extent":{"__isSmartRef__":true,"id":248},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"247":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"248":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"249":{"morph":{"__isSmartRef__":true,"id":245},"dispatchTable":{"__isSmartRef__":true,"id":250},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"250":{"mouseup":{"__isSmartRef__":true,"id":251},"mousedown":{"__isSmartRef__":true,"id":252},"selectstart":{"__isSmartRef__":true,"id":253},"mousewheel":{"__isSmartRef__":true,"id":254},"keydown":{"__isSmartRef__":true,"id":255},"keyup":{"__isSmartRef__":true,"id":256},"keypress":{"__isSmartRef__":true,"id":257}},"251":{"type":"mouseup","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"252":{"type":"mousedown","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"253":{"type":"selectstart","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"254":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"255":{"type":"keydown","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"256":{"type":"keyup","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"257":{"type":"keypress","target":{"__isSmartRef__":true,"id":245},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"258":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"259":{"position":{"__isSmartRef__":true,"id":260},"extent":{"__isSmartRef__":true,"id":261},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"260":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"261":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"262":{"morph":{"__isSmartRef__":true,"id":244},"dispatchTable":{"__isSmartRef__":true,"id":263},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"263":{"mouseup":{"__isSmartRef__":true,"id":264},"mousedown":{"__isSmartRef__":true,"id":265},"mousewheel":{"__isSmartRef__":true,"id":266}},"264":{"type":"mouseup","target":{"__isSmartRef__":true,"id":244},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"265":{"type":"mousedown","target":{"__isSmartRef__":true,"id":244},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"266":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":244},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"267":{"sourceObj":{"__isSmartRef__":true,"id":244},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":57},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"268":{"sourceObj":{"__isSmartRef__":true,"id":244},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":57},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"269":{"x":881,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"270":{"submorphs":[{"__isSmartRef__":true,"id":271}],"scripts":[],"id":1224,"shape":{"__isSmartRef__":true,"id":285},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":288},"label":{"__isSmartRef__":true,"id":271},"owner":{"__isSmartRef__":true,"id":217},"attributeConnections":[{"__isSmartRef__":true,"id":293},{"__isSmartRef__":true,"id":294}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":295},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"271":{"submorphs":[],"scripts":[],"id":1225,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":272},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":275},"_Position":{"__isSmartRef__":true,"id":284},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":270},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"272":{"position":{"__isSmartRef__":true,"id":273},"extent":{"__isSmartRef__":true,"id":274},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"273":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"274":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"275":{"morph":{"__isSmartRef__":true,"id":271},"dispatchTable":{"__isSmartRef__":true,"id":276},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"276":{"mouseup":{"__isSmartRef__":true,"id":277},"mousedown":{"__isSmartRef__":true,"id":278},"selectstart":{"__isSmartRef__":true,"id":279},"mousewheel":{"__isSmartRef__":true,"id":280},"keydown":{"__isSmartRef__":true,"id":281},"keyup":{"__isSmartRef__":true,"id":282},"keypress":{"__isSmartRef__":true,"id":283}},"277":{"type":"mouseup","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"278":{"type":"mousedown","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"279":{"type":"selectstart","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"280":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"281":{"type":"keydown","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"282":{"type":"keyup","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"283":{"type":"keypress","target":{"__isSmartRef__":true,"id":271},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"284":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"285":{"position":{"__isSmartRef__":true,"id":286},"extent":{"__isSmartRef__":true,"id":287},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"286":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"287":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"288":{"morph":{"__isSmartRef__":true,"id":270},"dispatchTable":{"__isSmartRef__":true,"id":289},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"289":{"mouseup":{"__isSmartRef__":true,"id":290},"mousedown":{"__isSmartRef__":true,"id":291},"mousewheel":{"__isSmartRef__":true,"id":292}},"290":{"type":"mouseup","target":{"__isSmartRef__":true,"id":270},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"291":{"type":"mousedown","target":{"__isSmartRef__":true,"id":270},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"292":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":270},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"293":{"sourceObj":{"__isSmartRef__":true,"id":270},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":57},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"294":{"sourceObj":{"__isSmartRef__":true,"id":270},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":57},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"295":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"296":{"submorphs":[{"__isSmartRef__":true,"id":297}],"scripts":[],"id":1226,"shape":{"__isSmartRef__":true,"id":311},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":314},"label":{"__isSmartRef__":true,"id":297},"owner":{"__isSmartRef__":true,"id":217},"attributeConnections":[{"__isSmartRef__":true,"id":319},{"__isSmartRef__":true,"id":320}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":321},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"297":{"submorphs":[],"scripts":[],"id":1227,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":298},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":301},"_Position":{"__isSmartRef__":true,"id":310},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":296},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"298":{"position":{"__isSmartRef__":true,"id":299},"extent":{"__isSmartRef__":true,"id":300},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"299":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"300":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"301":{"morph":{"__isSmartRef__":true,"id":297},"dispatchTable":{"__isSmartRef__":true,"id":302},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"302":{"mouseup":{"__isSmartRef__":true,"id":303},"mousedown":{"__isSmartRef__":true,"id":304},"selectstart":{"__isSmartRef__":true,"id":305},"mousewheel":{"__isSmartRef__":true,"id":306},"keydown":{"__isSmartRef__":true,"id":307},"keyup":{"__isSmartRef__":true,"id":308},"keypress":{"__isSmartRef__":true,"id":309}},"303":{"type":"mouseup","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"304":{"type":"mousedown","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"305":{"type":"selectstart","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"306":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"307":{"type":"keydown","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"308":{"type":"keyup","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"309":{"type":"keypress","target":{"__isSmartRef__":true,"id":297},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"310":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"311":{"position":{"__isSmartRef__":true,"id":312},"extent":{"__isSmartRef__":true,"id":313},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"312":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"313":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"314":{"morph":{"__isSmartRef__":true,"id":296},"dispatchTable":{"__isSmartRef__":true,"id":315},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"315":{"mouseup":{"__isSmartRef__":true,"id":316},"mousedown":{"__isSmartRef__":true,"id":317},"mousewheel":{"__isSmartRef__":true,"id":318}},"316":{"type":"mouseup","target":{"__isSmartRef__":true,"id":296},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"317":{"type":"mousedown","target":{"__isSmartRef__":true,"id":296},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"318":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":296},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"319":{"sourceObj":{"__isSmartRef__":true,"id":296},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":57},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"320":{"sourceObj":{"__isSmartRef__":true,"id":296},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":57},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"321":{"x":862,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"322":{"position":{"__isSmartRef__":true,"id":323},"extent":{"__isSmartRef__":true,"id":324},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"323":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"324":{"x":900,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"325":{"morph":{"__isSmartRef__":true,"id":217},"dispatchTable":{"__isSmartRef__":true,"id":326},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"326":{"mouseup":{"__isSmartRef__":true,"id":327},"mousedown":{"__isSmartRef__":true,"id":328},"mousewheel":{"__isSmartRef__":true,"id":329}},"327":{"type":"mouseup","target":{"__isSmartRef__":true,"id":217},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"328":{"type":"mousedown","target":{"__isSmartRef__":true,"id":217},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"329":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":217},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"330":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"331":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":332},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"332":{"x":900,"y":928.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"333":{"morph":{"__isSmartRef__":true,"id":57},"dispatchTable":{"__isSmartRef__":true,"id":334},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"334":{"mouseup":{"__isSmartRef__":true,"id":335},"mousedown":{"__isSmartRef__":true,"id":336},"mousewheel":{"__isSmartRef__":true,"id":337}},"335":{"type":"mouseup","target":{"__isSmartRef__":true,"id":57},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"336":{"type":"mousedown","target":{"__isSmartRef__":true,"id":57},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"337":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":57},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"338":{"x":13,"y":9,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"339":{"submorphs":[{"__isSmartRef__":true,"id":340},{"__isSmartRef__":true,"id":354}],"scripts":[],"id":1277,"shape":{"__isSmartRef__":true,"id":466},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":468},"_Position":{"__isSmartRef__":true,"id":473},"targetMorph":{"__isSmartRef__":true,"id":340},"titleBar":{"__isSmartRef__":true,"id":354},"contentOffset":{"__isSmartRef__":true,"id":353},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"340":{"submorphs":[],"scripts":[],"id":1276,"cachedTextString":"m = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\nthis.world().addMorph(m1)\nm.align(m1.bounds().bottomLeft(), this.owner.bounds().topLeft())\n\nm.onKeyDown = function(evt) { m.moveBy(pt(1,0)) }\nm.registerForEvent('keydown', m, 'onKeyDown');\n\nthis.renderContext().textNode.blur()\nm.renderContext().morphNode.setAttribute('tabindex', -1)\nm.renderContext().morphNode.focus()\n\ndelete this.world().renderContext().morphNode.tabindex\n\nthis.world().registerForGlobalKeyboardEvents()\nthis.world().onKeyPress()\nthis.setName('workspaceText')\n\nlively.morphic.TextEditor.prototype.initialViewExtent = pt(800, 900)\nnew lively.morphic.TextEditor().openIn(this.world())\n\nm = lively.morphic.Morph.makeRectangle(0,0, 100, 100)\nm.setPosition(this.owner.bounds().bottomRight().addXY(-10,-10))\nthis.world().addMorph(m)\nm.remove()\n\nthis.world().addFramedMorph \n\nbtn = new lively.morphic.Button(new Rectangle(5,10,123, 20), 'save')\nbtn = $morph('saveButton')\nbtn.attributeConnections\nthis.world().addMorph(btn)\nconnect(btn, 'fire', this.world(), 'saveWorld')\ndisconnectAll(btn)\n\nthis.world().saveWorld()\n\neditorContent = $morph('editorContent')\npanel = editorContent.owner\npanel.urlText.attributeConnections[0].connect()\npanel.urlText.savedTextString\npanel.urlText.__lookupSetter__('savedTextString')\ndelete panel.urlText.doSave\npanel.urlText.addScript(function doSave() {\n\talert('saving ' + this);\n\tthis.savedTextString = this.textString\n})\npanel.ownerApp.currentURL\n\nProperties.own(panel)\neditorContent.attributeConnections\neditorContent.savedTextString","shape":{"__isSmartRef__":true,"id":341},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":724,"_MaxTextHeight":318,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"auto","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":344},"_Position":{"__isSmartRef__":true,"id":353},"textColor":{"__isSmartRef__":true,"id":63},"owner":{"__isSmartRef__":true,"id":339},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"341":{"position":{"__isSmartRef__":true,"id":342},"extent":{"__isSmartRef__":true,"id":343},"borderWidth":2,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":64},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"342":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"343":{"x":724,"y":318,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"344":{"morph":{"__isSmartRef__":true,"id":340},"dispatchTable":{"__isSmartRef__":true,"id":345},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"345":{"mouseup":{"__isSmartRef__":true,"id":346},"mousedown":{"__isSmartRef__":true,"id":347},"selectstart":{"__isSmartRef__":true,"id":348},"mousewheel":{"__isSmartRef__":true,"id":349},"keydown":{"__isSmartRef__":true,"id":350},"keyup":{"__isSmartRef__":true,"id":351},"keypress":{"__isSmartRef__":true,"id":352}},"346":{"type":"mouseup","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"347":{"type":"mousedown","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"348":{"type":"selectstart","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"349":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"350":{"type":"keydown","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"351":{"type":"keyup","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"352":{"type":"keypress","target":{"__isSmartRef__":true,"id":340},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"353":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"354":{"submorphs":[{"__isSmartRef__":true,"id":355},{"__isSmartRef__":true,"id":365},{"__isSmartRef__":true,"id":379},{"__isSmartRef__":true,"id":405},{"__isSmartRef__":true,"id":431}],"scripts":[],"id":1278,"shape":{"__isSmartRef__":true,"id":457},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":460},"_Position":{"__isSmartRef__":true,"id":465},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":355},"windowMorph":{"__isSmartRef__":true,"id":339},"label":{"__isSmartRef__":true,"id":365},"closeButton":{"__isSmartRef__":true,"id":379},"menuButton":{"__isSmartRef__":true,"id":405},"collapseButton":{"__isSmartRef__":true,"id":431},"owner":{"__isSmartRef__":true,"id":339},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"355":{"submorphs":[],"scripts":[],"id":1279,"shape":{"__isSmartRef__":true,"id":356},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":359},"_Position":{"__isSmartRef__":true,"id":364},"owner":{"__isSmartRef__":true,"id":354},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"356":{"position":{"__isSmartRef__":true,"id":357},"extent":{"__isSmartRef__":true,"id":358},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":222},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"357":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"358":{"x":500,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"359":{"morph":{"__isSmartRef__":true,"id":355},"dispatchTable":{"__isSmartRef__":true,"id":360},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"360":{"mouseup":{"__isSmartRef__":true,"id":361},"mousedown":{"__isSmartRef__":true,"id":362},"mousewheel":{"__isSmartRef__":true,"id":363}},"361":{"type":"mouseup","target":{"__isSmartRef__":true,"id":355},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"362":{"type":"mousedown","target":{"__isSmartRef__":true,"id":355},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"363":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":355},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"364":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"365":{"submorphs":[],"scripts":[],"id":1280,"cachedTextString":"Workspace","shape":{"__isSmartRef__":true,"id":366},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":369},"_Position":{"__isSmartRef__":true,"id":378},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":243},"owner":{"__isSmartRef__":true,"id":354},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"366":{"position":{"__isSmartRef__":true,"id":367},"extent":{"__isSmartRef__":true,"id":368},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"367":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"368":{"x":72,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"369":{"morph":{"__isSmartRef__":true,"id":365},"dispatchTable":{"__isSmartRef__":true,"id":370},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"370":{"mouseup":{"__isSmartRef__":true,"id":371},"mousedown":{"__isSmartRef__":true,"id":372},"selectstart":{"__isSmartRef__":true,"id":373},"mousewheel":{"__isSmartRef__":true,"id":374},"keydown":{"__isSmartRef__":true,"id":375},"keyup":{"__isSmartRef__":true,"id":376},"keypress":{"__isSmartRef__":true,"id":377}},"371":{"type":"mouseup","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"372":{"type":"mousedown","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"373":{"type":"selectstart","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"374":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"375":{"type":"keydown","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"376":{"type":"keyup","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"377":{"type":"keypress","target":{"__isSmartRef__":true,"id":365},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"378":{"x":214,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"379":{"submorphs":[{"__isSmartRef__":true,"id":380}],"scripts":[],"id":1281,"shape":{"__isSmartRef__":true,"id":394},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":397},"label":{"__isSmartRef__":true,"id":380},"owner":{"__isSmartRef__":true,"id":354},"attributeConnections":[{"__isSmartRef__":true,"id":402},{"__isSmartRef__":true,"id":403}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":404},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"380":{"submorphs":[],"scripts":[],"id":1282,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":381},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":384},"_Position":{"__isSmartRef__":true,"id":393},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":379},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"381":{"position":{"__isSmartRef__":true,"id":382},"extent":{"__isSmartRef__":true,"id":383},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"382":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"383":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"384":{"morph":{"__isSmartRef__":true,"id":380},"dispatchTable":{"__isSmartRef__":true,"id":385},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"385":{"mouseup":{"__isSmartRef__":true,"id":386},"mousedown":{"__isSmartRef__":true,"id":387},"selectstart":{"__isSmartRef__":true,"id":388},"mousewheel":{"__isSmartRef__":true,"id":389},"keydown":{"__isSmartRef__":true,"id":390},"keyup":{"__isSmartRef__":true,"id":391},"keypress":{"__isSmartRef__":true,"id":392}},"386":{"type":"mouseup","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"387":{"type":"mousedown","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"388":{"type":"selectstart","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"389":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"390":{"type":"keydown","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"391":{"type":"keyup","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"392":{"type":"keypress","target":{"__isSmartRef__":true,"id":380},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"393":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"394":{"position":{"__isSmartRef__":true,"id":395},"extent":{"__isSmartRef__":true,"id":396},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"395":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"396":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"397":{"morph":{"__isSmartRef__":true,"id":379},"dispatchTable":{"__isSmartRef__":true,"id":398},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"398":{"mouseup":{"__isSmartRef__":true,"id":399},"mousedown":{"__isSmartRef__":true,"id":400},"mousewheel":{"__isSmartRef__":true,"id":401}},"399":{"type":"mouseup","target":{"__isSmartRef__":true,"id":379},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"400":{"type":"mousedown","target":{"__isSmartRef__":true,"id":379},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"401":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":379},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"402":{"sourceObj":{"__isSmartRef__":true,"id":379},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":339},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"403":{"sourceObj":{"__isSmartRef__":true,"id":379},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":339},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"404":{"x":481,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"405":{"submorphs":[{"__isSmartRef__":true,"id":406}],"scripts":[],"id":1283,"shape":{"__isSmartRef__":true,"id":420},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":423},"label":{"__isSmartRef__":true,"id":406},"owner":{"__isSmartRef__":true,"id":354},"attributeConnections":[{"__isSmartRef__":true,"id":428},{"__isSmartRef__":true,"id":429}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":430},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"406":{"submorphs":[],"scripts":[],"id":1284,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":407},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":410},"_Position":{"__isSmartRef__":true,"id":419},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":405},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"407":{"position":{"__isSmartRef__":true,"id":408},"extent":{"__isSmartRef__":true,"id":409},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"408":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"409":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"410":{"morph":{"__isSmartRef__":true,"id":406},"dispatchTable":{"__isSmartRef__":true,"id":411},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"411":{"mouseup":{"__isSmartRef__":true,"id":412},"mousedown":{"__isSmartRef__":true,"id":413},"selectstart":{"__isSmartRef__":true,"id":414},"mousewheel":{"__isSmartRef__":true,"id":415},"keydown":{"__isSmartRef__":true,"id":416},"keyup":{"__isSmartRef__":true,"id":417},"keypress":{"__isSmartRef__":true,"id":418}},"412":{"type":"mouseup","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"413":{"type":"mousedown","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"414":{"type":"selectstart","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"415":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"416":{"type":"keydown","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"417":{"type":"keyup","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"418":{"type":"keypress","target":{"__isSmartRef__":true,"id":406},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"419":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"420":{"position":{"__isSmartRef__":true,"id":421},"extent":{"__isSmartRef__":true,"id":422},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"421":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"422":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"423":{"morph":{"__isSmartRef__":true,"id":405},"dispatchTable":{"__isSmartRef__":true,"id":424},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"424":{"mouseup":{"__isSmartRef__":true,"id":425},"mousedown":{"__isSmartRef__":true,"id":426},"mousewheel":{"__isSmartRef__":true,"id":427}},"425":{"type":"mouseup","target":{"__isSmartRef__":true,"id":405},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"426":{"type":"mousedown","target":{"__isSmartRef__":true,"id":405},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"427":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":405},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"428":{"sourceObj":{"__isSmartRef__":true,"id":405},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":339},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"429":{"sourceObj":{"__isSmartRef__":true,"id":405},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":339},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"430":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"431":{"submorphs":[{"__isSmartRef__":true,"id":432}],"scripts":[],"id":1285,"shape":{"__isSmartRef__":true,"id":446},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":449},"label":{"__isSmartRef__":true,"id":432},"owner":{"__isSmartRef__":true,"id":354},"attributeConnections":[{"__isSmartRef__":true,"id":454},{"__isSmartRef__":true,"id":455}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":456},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"432":{"submorphs":[],"scripts":[],"id":1286,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":433},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":436},"_Position":{"__isSmartRef__":true,"id":445},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":431},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"433":{"position":{"__isSmartRef__":true,"id":434},"extent":{"__isSmartRef__":true,"id":435},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"434":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"435":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"436":{"morph":{"__isSmartRef__":true,"id":432},"dispatchTable":{"__isSmartRef__":true,"id":437},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"437":{"mouseup":{"__isSmartRef__":true,"id":438},"mousedown":{"__isSmartRef__":true,"id":439},"selectstart":{"__isSmartRef__":true,"id":440},"mousewheel":{"__isSmartRef__":true,"id":441},"keydown":{"__isSmartRef__":true,"id":442},"keyup":{"__isSmartRef__":true,"id":443},"keypress":{"__isSmartRef__":true,"id":444}},"438":{"type":"mouseup","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"439":{"type":"mousedown","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"440":{"type":"selectstart","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"441":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"442":{"type":"keydown","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"443":{"type":"keyup","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"444":{"type":"keypress","target":{"__isSmartRef__":true,"id":432},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"445":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"446":{"position":{"__isSmartRef__":true,"id":447},"extent":{"__isSmartRef__":true,"id":448},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"447":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"448":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"449":{"morph":{"__isSmartRef__":true,"id":431},"dispatchTable":{"__isSmartRef__":true,"id":450},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"450":{"mouseup":{"__isSmartRef__":true,"id":451},"mousedown":{"__isSmartRef__":true,"id":452},"mousewheel":{"__isSmartRef__":true,"id":453}},"451":{"type":"mouseup","target":{"__isSmartRef__":true,"id":431},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"452":{"type":"mousedown","target":{"__isSmartRef__":true,"id":431},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"453":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":431},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"454":{"sourceObj":{"__isSmartRef__":true,"id":431},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":339},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"455":{"sourceObj":{"__isSmartRef__":true,"id":431},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":339},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"456":{"x":462,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"457":{"position":{"__isSmartRef__":true,"id":458},"extent":{"__isSmartRef__":true,"id":459},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"458":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"459":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"460":{"morph":{"__isSmartRef__":true,"id":354},"dispatchTable":{"__isSmartRef__":true,"id":461},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"461":{"mouseup":{"__isSmartRef__":true,"id":462},"mousedown":{"__isSmartRef__":true,"id":463},"mousewheel":{"__isSmartRef__":true,"id":464}},"462":{"type":"mouseup","target":{"__isSmartRef__":true,"id":354},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"463":{"type":"mousedown","target":{"__isSmartRef__":true,"id":354},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"464":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":354},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"465":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"466":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":467},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"467":{"x":500,"y":228.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"468":{"morph":{"__isSmartRef__":true,"id":339},"dispatchTable":{"__isSmartRef__":true,"id":469},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"469":{"mouseup":{"__isSmartRef__":true,"id":470},"mousedown":{"__isSmartRef__":true,"id":471},"mousewheel":{"__isSmartRef__":true,"id":472}},"470":{"type":"mouseup","target":{"__isSmartRef__":true,"id":339},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"471":{"type":"mousedown","target":{"__isSmartRef__":true,"id":339},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"472":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":339},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"473":{"x":939,"y":543,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"474":{"submorphs":[{"__isSmartRef__":true,"id":475},{"__isSmartRef__":true,"id":621}],"scripts":[],"id":1439,"shape":{"__isSmartRef__":true,"id":733},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":735},"_Position":{"__isSmartRef__":true,"id":740},"targetMorph":{"__isSmartRef__":true,"id":475},"titleBar":{"__isSmartRef__":true,"id":621},"contentOffset":{"__isSmartRef__":true,"id":620},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"475":{"submorphs":[{"__isSmartRef__":true,"id":476},{"__isSmartRef__":true,"id":494},{"__isSmartRef__":true,"id":528},{"__isSmartRef__":true,"id":562},{"__isSmartRef__":true,"id":596}],"scripts":[],"id":1430,"shape":{"__isSmartRef__":true,"id":611},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":615},"_Position":{"__isSmartRef__":true,"id":620},"urlText":{"__isSmartRef__":true,"id":476},"contentMorph":{"__isSmartRef__":true,"id":596},"owner":{"__isSmartRef__":true,"id":474},"ownerApp":{"__isSmartRef__":true,"id":491},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"476":{"submorphs":[],"scripts":[],"id":1431,"cachedTextString":"http://lively-kernel.org/repository/webwerkstatt/lively/ide/BrowserFramework.js","shape":{"__isSmartRef__":true,"id":477},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":20,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"hidden","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":480},"_Position":{"__isSmartRef__":true,"id":489},"textColor":{"__isSmartRef__":true,"id":63},"isInputLine":true,"owner":{"__isSmartRef__":true,"id":475},"attributeConnections":[{"__isSmartRef__":true,"id":490}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"savedTextString":"http://lively-kernel.org/repository/webwerkstatt/lively/ide/BrowserFramework.js","__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"477":{"position":{"__isSmartRef__":true,"id":478},"extent":{"__isSmartRef__":true,"id":479},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":64},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"478":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"479":{"x":898,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"480":{"morph":{"__isSmartRef__":true,"id":476},"dispatchTable":{"__isSmartRef__":true,"id":481},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"481":{"mouseup":{"__isSmartRef__":true,"id":482},"mousedown":{"__isSmartRef__":true,"id":483},"selectstart":{"__isSmartRef__":true,"id":484},"mousewheel":{"__isSmartRef__":true,"id":485},"keydown":{"__isSmartRef__":true,"id":486},"keyup":{"__isSmartRef__":true,"id":487},"keypress":{"__isSmartRef__":true,"id":488}},"482":{"type":"mouseup","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"483":{"type":"mousedown","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"484":{"type":"selectstart","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"485":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"486":{"type":"keydown","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"487":{"type":"keyup","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"488":{"type":"keypress","target":{"__isSmartRef__":true,"id":476},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"489":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"490":{"sourceObj":{"__isSmartRef__":true,"id":476},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":491},"targetMethodName":"setCurrentURL","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"491":{"attributeConnections":[{"__isSmartRef__":true,"id":492}],"doNotSerialize":["$$currentURL"],"doNotCopyProperties":["$$currentURL"],"currentURL":{"__isSmartRef__":true,"id":493},"panel":{"__isSmartRef__":true,"id":475},"view":{"__isSmartRef__":true,"id":474},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TextEditor"},"492":{"sourceObj":{"__isSmartRef__":true,"id":491},"sourceAttrName":"currentURL","targetObj":{"__isSmartRef__":true,"id":491},"targetMethodName":"loadFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"493":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lively/ide/BrowserFramework.js","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"494":{"submorphs":[{"__isSmartRef__":true,"id":495}],"scripts":[],"id":1432,"shape":{"__isSmartRef__":true,"id":509},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":512},"_Position":{"__isSmartRef__":true,"id":517},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":98},"lighterFill":{"__isSmartRef__":true,"id":518},"label":{"__isSmartRef__":true,"id":495},"owner":{"__isSmartRef__":true,"id":475},"attributeConnections":[{"__isSmartRef__":true,"id":527}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Button"},"495":{"submorphs":[],"scripts":[],"id":1433,"cachedTextString":"save","shape":{"__isSmartRef__":true,"id":496},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":499},"_Position":{"__isSmartRef__":true,"id":508},"textColor":{"__isSmartRef__":true,"id":63},"owner":{"__isSmartRef__":true,"id":494},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"496":{"position":{"__isSmartRef__":true,"id":497},"extent":{"__isSmartRef__":true,"id":498},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"497":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"498":{"x":300,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"499":{"morph":{"__isSmartRef__":true,"id":495},"dispatchTable":{"__isSmartRef__":true,"id":500},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"500":{"mouseup":{"__isSmartRef__":true,"id":501},"mousedown":{"__isSmartRef__":true,"id":502},"selectstart":{"__isSmartRef__":true,"id":503},"mousewheel":{"__isSmartRef__":true,"id":504},"keydown":{"__isSmartRef__":true,"id":505},"keyup":{"__isSmartRef__":true,"id":506},"keypress":{"__isSmartRef__":true,"id":507}},"501":{"type":"mouseup","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"502":{"type":"mousedown","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"503":{"type":"selectstart","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"504":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"505":{"type":"keydown","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"506":{"type":"keyup","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"507":{"type":"keypress","target":{"__isSmartRef__":true,"id":495},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"508":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"509":{"position":{"__isSmartRef__":true,"id":510},"extent":{"__isSmartRef__":true,"id":511},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":97},"fill":{"__isSmartRef__":true,"id":98},"borderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"510":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"511":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"512":{"morph":{"__isSmartRef__":true,"id":494},"dispatchTable":{"__isSmartRef__":true,"id":513},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"513":{"mouseup":{"__isSmartRef__":true,"id":514},"mousedown":{"__isSmartRef__":true,"id":515},"mousewheel":{"__isSmartRef__":true,"id":516}},"514":{"type":"mouseup","target":{"__isSmartRef__":true,"id":494},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"515":{"type":"mousedown","target":{"__isSmartRef__":true,"id":494},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"516":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":494},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"517":{"x":0,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"518":{"stops":[{"__isSmartRef__":true,"id":519},{"__isSmartRef__":true,"id":521},{"__isSmartRef__":true,"id":523},{"__isSmartRef__":true,"id":525}],"vector":{"__isSmartRef__":true,"id":107},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"519":{"offset":0,"color":{"__isSmartRef__":true,"id":520}},"520":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"521":{"offset":0.4,"color":{"__isSmartRef__":true,"id":522}},"522":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"523":{"offset":0.6,"color":{"__isSmartRef__":true,"id":524}},"524":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"525":{"offset":1,"color":{"__isSmartRef__":true,"id":526}},"526":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"527":{"sourceObj":{"__isSmartRef__":true,"id":494},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":491},"targetMethodName":"saveFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"528":{"submorphs":[{"__isSmartRef__":true,"id":529}],"scripts":[],"id":1434,"shape":{"__isSmartRef__":true,"id":543},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":546},"_Position":{"__isSmartRef__":true,"id":551},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":98},"lighterFill":{"__isSmartRef__":true,"id":552},"label":{"__isSmartRef__":true,"id":529},"owner":{"__isSmartRef__":true,"id":475},"attributeConnections":[{"__isSmartRef__":true,"id":561}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Button"},"529":{"submorphs":[],"scripts":[],"id":1435,"cachedTextString":"load","shape":{"__isSmartRef__":true,"id":530},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":533},"_Position":{"__isSmartRef__":true,"id":542},"textColor":{"__isSmartRef__":true,"id":63},"owner":{"__isSmartRef__":true,"id":528},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"530":{"position":{"__isSmartRef__":true,"id":531},"extent":{"__isSmartRef__":true,"id":532},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"531":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"532":{"x":300,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"533":{"morph":{"__isSmartRef__":true,"id":529},"dispatchTable":{"__isSmartRef__":true,"id":534},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"534":{"mouseup":{"__isSmartRef__":true,"id":535},"mousedown":{"__isSmartRef__":true,"id":536},"selectstart":{"__isSmartRef__":true,"id":537},"mousewheel":{"__isSmartRef__":true,"id":538},"keydown":{"__isSmartRef__":true,"id":539},"keyup":{"__isSmartRef__":true,"id":540},"keypress":{"__isSmartRef__":true,"id":541}},"535":{"type":"mouseup","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"536":{"type":"mousedown","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"537":{"type":"selectstart","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"538":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"539":{"type":"keydown","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"540":{"type":"keyup","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"541":{"type":"keypress","target":{"__isSmartRef__":true,"id":529},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"542":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"543":{"position":{"__isSmartRef__":true,"id":544},"extent":{"__isSmartRef__":true,"id":545},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":97},"fill":{"__isSmartRef__":true,"id":98},"borderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"544":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"545":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"546":{"morph":{"__isSmartRef__":true,"id":528},"dispatchTable":{"__isSmartRef__":true,"id":547},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"547":{"mouseup":{"__isSmartRef__":true,"id":548},"mousedown":{"__isSmartRef__":true,"id":549},"mousewheel":{"__isSmartRef__":true,"id":550}},"548":{"type":"mouseup","target":{"__isSmartRef__":true,"id":528},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"549":{"type":"mousedown","target":{"__isSmartRef__":true,"id":528},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"550":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":528},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"551":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"552":{"stops":[{"__isSmartRef__":true,"id":553},{"__isSmartRef__":true,"id":555},{"__isSmartRef__":true,"id":557},{"__isSmartRef__":true,"id":559}],"vector":{"__isSmartRef__":true,"id":107},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"553":{"offset":0,"color":{"__isSmartRef__":true,"id":554}},"554":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"555":{"offset":0.4,"color":{"__isSmartRef__":true,"id":556}},"556":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"557":{"offset":0.6,"color":{"__isSmartRef__":true,"id":558}},"558":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"559":{"offset":1,"color":{"__isSmartRef__":true,"id":560}},"560":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"561":{"sourceObj":{"__isSmartRef__":true,"id":528},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":491},"targetMethodName":"loadFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"562":{"submorphs":[{"__isSmartRef__":true,"id":563}],"scripts":[],"id":1436,"shape":{"__isSmartRef__":true,"id":577},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":580},"_Position":{"__isSmartRef__":true,"id":585},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":98},"lighterFill":{"__isSmartRef__":true,"id":586},"label":{"__isSmartRef__":true,"id":563},"owner":{"__isSmartRef__":true,"id":475},"attributeConnections":[{"__isSmartRef__":true,"id":595}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Button"},"563":{"submorphs":[],"scripts":[],"id":1437,"cachedTextString":"remove","shape":{"__isSmartRef__":true,"id":564},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":567},"_Position":{"__isSmartRef__":true,"id":576},"textColor":{"__isSmartRef__":true,"id":63},"owner":{"__isSmartRef__":true,"id":562},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"564":{"position":{"__isSmartRef__":true,"id":565},"extent":{"__isSmartRef__":true,"id":566},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"565":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"566":{"x":300,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"567":{"morph":{"__isSmartRef__":true,"id":563},"dispatchTable":{"__isSmartRef__":true,"id":568},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"568":{"mouseup":{"__isSmartRef__":true,"id":569},"mousedown":{"__isSmartRef__":true,"id":570},"selectstart":{"__isSmartRef__":true,"id":571},"mousewheel":{"__isSmartRef__":true,"id":572},"keydown":{"__isSmartRef__":true,"id":573},"keyup":{"__isSmartRef__":true,"id":574},"keypress":{"__isSmartRef__":true,"id":575}},"569":{"type":"mouseup","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"570":{"type":"mousedown","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"571":{"type":"selectstart","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"572":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"573":{"type":"keydown","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"574":{"type":"keyup","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"575":{"type":"keypress","target":{"__isSmartRef__":true,"id":563},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"576":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"577":{"position":{"__isSmartRef__":true,"id":578},"extent":{"__isSmartRef__":true,"id":579},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":97},"fill":{"__isSmartRef__":true,"id":98},"borderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"578":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"579":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"580":{"morph":{"__isSmartRef__":true,"id":562},"dispatchTable":{"__isSmartRef__":true,"id":581},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"581":{"mouseup":{"__isSmartRef__":true,"id":582},"mousedown":{"__isSmartRef__":true,"id":583},"mousewheel":{"__isSmartRef__":true,"id":584}},"582":{"type":"mouseup","target":{"__isSmartRef__":true,"id":562},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"583":{"type":"mousedown","target":{"__isSmartRef__":true,"id":562},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"584":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":562},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"585":{"x":600,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"586":{"stops":[{"__isSmartRef__":true,"id":587},{"__isSmartRef__":true,"id":589},{"__isSmartRef__":true,"id":591},{"__isSmartRef__":true,"id":593}],"vector":{"__isSmartRef__":true,"id":107},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"587":{"offset":0,"color":{"__isSmartRef__":true,"id":588}},"588":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"589":{"offset":0.4,"color":{"__isSmartRef__":true,"id":590}},"590":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"591":{"offset":0.6,"color":{"__isSmartRef__":true,"id":592}},"592":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"593":{"offset":1,"color":{"__isSmartRef__":true,"id":594}},"594":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"595":{"sourceObj":{"__isSmartRef__":true,"id":562},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":491},"targetMethodName":"removeFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"596":{"submorphs":[],"scripts":[],"id":1438,"cachedTextString":"module('lively.ide.BrowserFramework').requires('lively.bindings', Config.isNewMorphic ? 'lively.morphic.Widgets' : 'lively.Widgets').toRun(function() {\n\nWidget.subclass('lively.ide.BasicBrowser',\n'settings', {\n\tdocumentation: 'Abstract widget with three list panes and one text pane. Uses nodes to display and manipulate content.',\n\temptyText: '-----',\n\tconnections: ['targetURL', 'sourceString', 'pane1Selection', 'pane2Selection', 'pane3Selection', 'pane4Selection'],\n},\n'initializing', {\n\n\tinitialViewExtent: pt(820, 550),\n\n\tpanelSpec: [\n\t\t\t['locationPane', newTextPane, new Rectangle(0, 0, 0.8, 0.04)],\n\t\t\t['codeBaseDirBtn', function(bnds) { \n\t\t\t\t\treturn new ButtonMorph(bnds) }, new Rectangle(0.8, 0, 0.12, 0.04)],\n\t\t\t['localDirBtn', function(bnds) { \n\t\t\t\t\treturn new ButtonMorph(bnds) }, new Rectangle(0.92, 0, 0.08, 0.04)],\n\t\t\t['Pane1', newDragnDropListPane, new Rectangle(0, 0.05, 0.25, 0.35)],\n\t\t\t['Pane2', newDragnDropListPane, new Rectangle(0.25, 0.05, 0.25, 0.35)],\n\t\t\t['Pane3', newDragnDropListPane, new Rectangle(0.5, 0.05, 0.25, 0.35)],\n\t\t\t['Pane4', newDragnDropListPane, new Rectangle(0.75, 0.05, 0.25, 0.35)],\n\t\t\t['midResizer', function(bnds) { \n\t\t\t\t\treturn new HorizontalDivider(bnds) }, new Rectangle(0, 0.44, 1, 0.01)],\n\t\t\t['sourcePane', newTextPane, new Rectangle(0, 0.45, 1, 0.49)],\n\t\t\t['bottomResizer', function(bnds) { \n\t\t\t\t\treturn new HorizontalDivider(bnds) }, new Rectangle(0, 0.94, 1, 0.01)],\n\t\t\t['commentPane', newTextPane, new Rectangle(0, 0.95, 1, 0.05)]\n\t\t],\n\n\tallPaneNames: ['Pane1', 'Pane2', 'Pane3', 'Pane4'],\n\n\tfilterPlaces: ['Root', 'Pane1', 'Pane2', 'Pane3', 'Pane4'],\n\n\tformals: [\"Pane1Content\", \"Pane1Selection\", \"Pane1Menu\", \"Pane1Filters\",\n\t\t\t\"Pane2Content\", \"Pane2Selection\", \"Pane2Menu\", \"Pane2Filters\",\n\t\t\t\"Pane3Content\", \"Pane3Selection\", \"Pane3Menu\", \"Pane3Filters\",\n\t\t\t\"Pane4Content\", \"Pane4Selection\", \"Pane4Menu\", \"Pane4Filters\",\n\t\t\t\"SourceString\", \"StatusMessage\", \"RootFilters\"],\n\n\tinitialize: function($super) {\n\t\t$super();\n\n\t\t//create a model and relay for connecting the additional components later on\n\t\tvar formals = this.formals,\n\t\t\tdefaultValues = (function() {\n\t\t\t\treturn formals.inject({}, function(spec, ea) { spec[ea] = null; return spec });\n\t\t\t})(),\n\t\t\tmodel = Record.newPlainInstance(defaultValues);\n\n\t\tthis.initializeModelRelay(model);\n\n\t\tthis.buttonCommands = [];\n\t},\n\tinitializeModelRelay: function(actualModel) {\n\t\tvar panes = this.allPaneNames,\n\t\t\tspec = {SourceString: \"SourceString\", StatusMessage: \"StatusMessage\", RootFilters: \"RootFilters\"};\n\t\tpanes.forEach(function(ea) {\n\t\t\tspec[ea + 'Content'] = ea + 'Content';\n\t\t\tspec[ea + 'Selection'] = ea + 'Selection';\n\t\t\tspec[ea + 'Menu'] = ea + 'Menu';\n\t\t\tspec[ea + 'Filters'] = ea + 'Filters';\n\t\t});\n\t\tthis.relayToModel(actualModel, spec);\n\t\tthis.filterPlaces.forEach(function(ea) { /*identity filter*/\t\n\t\t\tthis['set' + ea + 'Filters']([new lively.ide.NodeFilter()]);\n\t\t}, this);\n\t},\n\n\t\n buildView: function (extent) {\n \n\t\textent = extent || this.initialViewExtent;\n\n this.start();\n \n\t\tvar panel = new lively.ide.BrowserPanel(extent);\n PanelMorph.makePanedPanel(extent, this.panelSpec, panel);\n\t\tthis.panel = panel;\n \n\t\tthis.setupListPanes();\n\t\tthis.setupSourceInput();\n\t\tthis.setupLocationInput();\n \n\t\t//panel.statusPane.connectModel(model.newRelay({Text: \"-StatusMessage\"}));\n\t\tthis.buildCommandButtons(panel);\n \t\tthis.setupResizers(panel);\n\n\t\tpanel.commentPane.linkToStyles([\"Browser_commentPane\"])\n\t\tpanel.commentPane.innerMorph().linkToStyles([\"Browser_commentPaneText\"])\n\t\tpanel.commentPane.clipMorph.setFill(null);\n\n\t\tpanel.ownerWidget = this;\n return panel;\n },\n\n\tsetupListPanes: function() {\n\t\tvar model = this.getModel(), browser = this;\n\t\tfunction setupListPane(paneName) {\n var morph = browser.panel[paneName];\n\t\t\t// morph.innerMorph().plugTo(model, {\n\t\t\t\t// selection: '->set' + paneName + 'Selection',\n\t\t\t\t// selection: '<-get' + paneName + 'Selection',\n\t\t\t\t// getList: '->get' + paneName + 'Content',\n\t\t\t\t// updateList: '<-set' + paneName + 'Content',\n\t\t\t// })\n morph.connectModel(model.newRelay({List: (\"-\" + paneName + \"Content\"),\n Selection: ( paneName + 'Selection'),\n Menu: (\"-\" + paneName + \"Menu\")}), true);\n morph.withAllSubmorphsDo(function() {\n\t\t\t\tif (this.constructor == SliderMorph) return;\n this.onMouseDown = this.onMouseDown.wrap(function(proceed, evt) {\n\t\t\t\t\tbrowser.ensureSourceNotAccidentlyDeleted(proceed.curry(evt));\n });\n })\n }\n\t\tthis.allPaneNames.each(function(ea) { setupListPane(ea) });\n\t},\n\n\tsetupSourceInput: function() {\n\t\tthis.sourceInput().maxSafeSize = 2e6;\n\t\t// this.sourceInput().styleClass = ['codePane'];\n\t\tthis.panel.sourcePane.connectModel(this.getModel().newRelay({Text: \"SourceString\"}));\n\t\t// this.panel.sourcePane.innerMorph().plugTo(this, {\n\t\t// \t\tsetTextString: '<-setSourceString',\n\t\t// \t\tsavedTextString: '->setSourceString',\n\t\t// \t});\n\t\t// \tthis.setSourceString('test');\n\n\t\tthis.panel.sourcePane.linkToStyles([\"Browser_codePane\"])\n\t\tthis.panel.sourcePane.innerMorph().linkToStyles([\"Browser_codePaneText\"])\n\t\tthis.panel.sourcePane.clipMorph.setFill(null);\n\n\t\t// lively.bindings.connect(this, 'sourceString', this.panel.sourcePane.innerMorph(), 'setTextString');\n\t\t// lively.bindings.connect(this.panel.sourcePane.innerMorph(), 'savedTextString', this, 'setSourceString');\n\t\t// lively.bindings.connect(this, 'sourceString', console, 'log',\n\t\t\t// {converter: function(v) { return v ? v : 'null----' }});\n\t},\n\t\n\tsetupLocationInput: function() {\n\t\tvar locInput = this.locationInput();\n\t\tif (!locInput) return;\n\t\tlocInput.beInputLine();\n\t\tlocInput.noEval = true;\n\t\tlocInput.linkToStyles([\"Browser_locationInput\"])\n\t},\n\t\n\tsetupResizers: function() {\n\t\tvar panel = this.panel;\n\t\t\n\t\t// for compatibility to old pages -- FIXME remove\n\t\tif (!panel.bottomResizer || !panel.midResizer) return \n\t\t\n\t\t// resizer in the middle resiszes top panes, buttons and source pane\n\t\tthis.allPaneNames.collect(function(name) {\n\t\t\tpanel.midResizer.addScalingAbove(panel[name]);\n\t\t});\n\t\tpanel.midResizer.addScalingBelow(panel.sourcePane)\n\n\t\t// buttons\n\t\tpanel.submorphs.forEach(function(m) {\n\t\t\tif (m.constructor == ButtonMorph && m != panel.codeBaseDirBtn && m != panel.localDirBtn)\n\t\t\t\tpanel.midResizer.addFixed(m);\n\t\t})\n\n\t\t// bottom resizer divides code and comment pane\n\t\tpanel.bottomResizer.addScalingAbove(panel.sourcePane)\n\t\tpanel.bottomResizer.addScalingBelow(panel.commentPane)\n\n\t\tpanel.bottomResizer.linkToStyles([\"Browser_resizer\"]);\n\t\tpanel.midResizer.linkToStyles([\"Browser_resizer\"]);\n\t},\n\t\n\tbuildCommandButtons: function(morph) {\n\t\tvar cmds = this.commands()\n\t\t\t.collect(function(ea) { return new ea(this) }, this)\n\t\t\t.select(function(ea) { return ea.wantsButton() });\n\t\tif (cmds.length === 0) return;\n\n\t\tvar height = Math.round(morph.getExtent().y * 0.04);\n\t\tvar width = morph.getExtent().x / cmds.length\n\t\tvar y = morph.getExtent().y * 0.44 - height;\n\n\t\tvar btns = cmds.forEach(function(cmd, i) {\n\t\t\t// Refactor me!!!\n\t\t\tvar btn = new ButtonMorph(new Rectangle(i*width, y, width, height));\n\t\t\tbtn.command = cmd; // used in connection\n\t\t\tbtn.setLabel(cmd.asString());\n\t\t\tlively.bindings.connect(btn, 'fire', cmd, 'trigger');\n\t\t\tlively.bindings.connect(btn, 'fire', btn, 'setLabel', {\n\t\t\t\tconverter: function() { return this.getSourceObj().command.asString() }\n\t\t\t});\n\t\t\t// *wuergs* mixed old model and connect FIXME!!!\n\t\t\tvar btnModel = {\n\t\t\t\tsetIsActive: function(val) { btn.onIsActiveUpdate(val) },\n\t\t\t\tgetIsActive: function(val) { return cmd.isActive() }\n\t\t\t};\n\t\t\tbtn.connectModel({model: btnModel, setIsActive: 'setIsActive', getIsActive: 'getIsActive'});\n\t\t\tcmd.button = btn; // used in onPaneXUpdate, to be removed!!!\n\n\t\t\tmorph.addMorph(btn);\n\t\t\tbtnModel.setIsActive(cmd.isActive());\n\t\t})\n\t\tthis.buttonCommands = cmds;\n\t},\n\n start: function() {\n this.setPane1Content(this.childsFilteredAndAsListItems(this.rootNode(), this.getRootFilters()));\n\t\tthis.mySourceControl().registerBrowser(this);\n },\n\t\n\tstop: function() {\n\t\tthis.mySourceControl().unregisterBrowser(this);\n },\n\n},\n'testing', {\n hasUnsavedChanges: function() {\n return this.panel.sourcePane.innerMorph().hasUnsavedChanges();\n },\n},\n'accessing', {\n\n\tcommands: function() { return [] },\n\n\tlocationInput: function() { return this.panel.locationPane && this.panel.locationPane.innerMorph() },\n\t\n\tsourceInput: function() { return this.panel.sourcePane.innerMorph() },\n\n\tmySourceControl: function() {\n\t\tvar ctrl = lively.ide.startSourceControl();\n\t\tif (!ctrl) throw new Error('Browser has no SourceControl!');\n\t\treturn ctrl;\n\t},\n},\n'browser nodes', {\n\n rootNode: function() {\n throw dbgOn(new Error('To be implemented from subclass'));\n },\n \n\tselectedNode: function() {\n\t\treturn this.getPane4Selection() || this.getPane3Selection() || this.getPane2Selection() || this.getPane1Selection();\n\t},\n\n\tallNodes: function() {\n\t\treturn this.allPaneNames.collect(function(ea) { return this.nodesInPane(ea) }, this).flatten();\n\t},\n\n\tsiblingsFor: function(node) {\n\t\tvar siblings = this.allPaneNames\n\t\t.collect(function(ea) { return this.nodesInPane(ea) }, this)\n\t\t.detect(function(ea) { return ea.include(node) });\n\t\tif (!siblings) return [];\n\t\treturn siblings.without(node);\n\t},\n\n\tnodesInPane: function(paneName) { // panes have listItems, no nodes\n\t\tvar listItems = this['get' + paneName + 'Content']();\n\t\tif (!listItems) return [];\n\t\tif (!listItems.collect) {\n\t\t\tconsole.log('Weird bug: listItems: ' + listItems + ' has no collect in pane ' + paneName);\n\t\t\treturn [];\n\t\t}\n\t\treturn listItems.collect(function(ea) { return ea.value }) \n\t},\n\t\n\tpaneNameOfNode: function(node) {\n \treturn this.allPaneNames.detect(function(pane) {\n\t\t\t// FIXME quality\n\t\t\treturn this.nodesInPane(pane).any(function(otherNode) { return otherNode.target == node.target })\n\t\t}, this);\n\t},\n\n\tselectionInPane: function(pane) {\n\t\treturn this['get'+pane+'Selection'](); \n\t},\n\n\tchildsFilteredAndAsListItems: function(node, filters) {\n \treturn \tthis.filterChildNodesOf(node, filters || []).collect(function(ea) { return ea.asListItem() });\n },\n\n filterChildNodesOf: function(node, filters) {\n \treturn filters.inject(node.childNodes(), function(nodes, filter) {\n \t\treturn filter.apply(nodes)\n \t});\n },\n\n \tinPaneSelectNodeNamed: function(paneName, nodeName) {\n\t\treturn this.inPaneSelectNodeMatching(paneName, function(node) {\n\t\t\treturn node && node.asString && node.asString().replace(/ ?\\(.*\\)/,\"\").endsWith(nodeName) });\n\t},\n\n\tinPaneSelectNodeMatching: function(paneName, test) {\n\t\tvar listItems = this['get' + paneName + 'Content']();\n\t\tif (!listItems) return null;\n\t\tvar nodes = listItems.pluck('value');\n\t\tvar wanted = nodes.detect(test);\n\t\tif (!wanted) return null;\n\t\tvar list = this.panel[paneName].innerMorph();\n\t\tlist.setSelection(wanted, true);\n\t\treturn wanted;\n\t},\n\n\tselectNode: function(node) {\n\t\treturn this.selectNodeMatching(function(otherNode) { return node == otherNode });\n\t\t// var paneName = this.paneNameOfNode(node);\n\t\t// if (!paneName) return;\n\t\t// this.inPaneSelectNodeNamed(paneName, node.asString());\n\t},\n\n\tselectNodeMatching: function(testFunc) {\n\t\tfor (var i = 0; i < this.allPaneNames.length; i++) {\n\t\t\tvar paneName = this.allPaneNames[i];\n\t\t\tvar node = this.inPaneSelectNodeMatching(paneName, testFunc);\n\t\t\tif (node) return node;\n\t\t}\n\t\treturn null;\n\t},\n\tselectNodeNamed: function(name) {\n\t\treturn this.selectNodeMatching(function(node) {\n\t\t\treturn node && node.asString && node.asString().include(name);\n\t\t});\n\t},\n\tselectNothing: function() {\n\t\tif (this.panel) this.setPane1Selection(null, true);\n\t},\n\n\n onPane1SelectionUpdate: function(node) {\n\n\t\tthis.pane1Selection = node; // for bindings\n\n\t\tthis.panel['Pane2'] && this.panel['Pane2'].innerMorph().clearFilter(); // FIXME, lis filter, not a browser filter!\n\t\t\n this.setPane2Selection(null, true);\n this.setPane2Content([this.emptyText]);\n if (!node) return\n\n\t\tthis.setPane2Content(this.childsFilteredAndAsListItems(node, this.getPane1Filters()));\n \tthis.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n this.setPane1Menu(node.menuSpec().concat(this.commandMenuSpec('Pane1')));\n\t\tthis.setPane2Menu(this.commandMenuSpec('Pane2'));\n\t\tthis.setPane3Menu(this.commandMenuSpec('Pane3'));\n\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n \n onPane2SelectionUpdate: function(node) {\n\t\n\t\tthis.pane2Selection = node; // for bindings\n\n\t\tthis.panel['Pane3'] && this.panel['Pane3'].innerMorph().clearFilter(); // FIXME, lis filter, not a browser filter!\n\t\n this.setPane3Selection(null);\n this.setPane3Content([this.emptyText]); \n if (!node) return\n\n this.setPane3Content(this.childsFilteredAndAsListItems(node, this.getPane2Filters()));\n this.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n\t\tthis.setPane2Menu(node.menuSpec().concat(this.commandMenuSpec('Pane2')));\n\t\tthis.setPane3Menu(this.commandMenuSpec('Pane3'));\n\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n \n\tonPane3SelectionUpdate: function(node) {\n\t\tthis.pane3Selection = node; // for bindings\n\n\t\tthis.panel['Pane4'] && this.panel['Pane4'].innerMorph().clearFilter(); // FIXME, lis filter, not a browser filter!\n\t\n this.setPane4Selection(null);\n this.setPane4Content([this.emptyText]); \n if (!node) return;\n\n this.setPane4Content(this.childsFilteredAndAsListItems(node, this.getPane3Filters()));\n this.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n\t\tthis.setPane3Menu(node.menuSpec().concat(this.commandMenuSpec('Pane3')));\n\t\tthis.setPane4Menu(this.commandMenuSpec('Pane4'));\n\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n\n\tonPane4SelectionUpdate: function(node) {\n\t\tthis.pane4Selection = node; // for bindings\n\n\t\tif (!node) return;\n\n\t\tthis.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n\t\tthis.setPane4Menu(node.menuSpec().concat(this.commandMenuSpec('Pane4')));\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n\n\tonSourceStringUpdate: function(methodString, source) {\n\t\tthis.sourceString = methodString;\n\t\tif (!methodString || methodString == this.emptyText || !this.selectedNode()) return;\n\t\tif (this.selectedNode().sourceString() == methodString &&\n\t\t\tsource !== this.panel.sourcePane.innerMorph())\n\t\t\t\treturn;\n\t\tthis.selectedNode().newSource(methodString);\n\t\tthis.nodeChanged(this.selectedNode());\n\t},\n\n\tonPane1ContentUpdate: function() {\n\t},\n\n\tonPane2ContentUpdate: function() {\n\t},\n\n\tonPane3ContentUpdate: function(items, source) {\n\t\tif (source !== this.panel.Pane3.innerMorph())\n\t\t return;\n\t\t// handle drag and drop of items\n\t\tconsole.log('Got ' + items);\n\t},\n\n\tonPane4ContentUpdate: function(items, source) {\n\t},\n\n\tonPane1MenuUpdate: Functions.Null,\n\tonPane2MenuUpdate: Functions.Null,\n\tonPane3MenuUpdate: Functions.Null,\n\tonPane4MenuUpdate: Functions.Null,\n\tonPane1FiltersUpdate: Functions.Null,\n\tonPane2FiltersUpdate: Functions.Null,\n\tonPane3FiltersUpdate: Functions.Null,\n\tonPane4FiltersUpdate: Functions.Null,\n\tonStatusMessageUpdate: Functions.Null,\n\tonRootFiltersUpdate: Functions.Null,\n\n\tallChanged: function(keepUnsavedChanges, changedNode) {\n\t\t// optimization: if no node looks like the changed node in my browser do nothing\n\t\tif (changedNode && this.allNodes().every(function(ea) {return !changedNode.hasSimilarTarget(ea)}))\n\t\t\treturn;\n\n\t\t// FIXME remove duplication\n\t\tvar oldN1 = this.getPane1Selection();\n\t\tvar oldN2 = this.getPane2Selection();\n\t\tvar oldN3 = this.getPane3Selection();\n\t\tvar oldN4 = this.getPane4Selection();\n\n\t\tvar sourcePos = this.panel.sourcePane.getVerticalScrollPosition();\n\n\t\tvar src = keepUnsavedChanges &&\n\t\t\t\t\tthis.hasUnsavedChanges() &&\n\t\t\t\t\tthis.panel.sourcePane.innerMorph().textString;\n\n\t\tif (this.hasUnsavedChanges())\n\t\t\tthis.setSourceString(this.emptyText);\n\n\t\tvar revertStateOfPane = function(paneName, oldNode) {\n\t\t\tif (!oldNode) return;\n\t\t\tvar nodes = this.nodesInPane(paneName);\n\t\t\tvar newNode = nodes.detect(function(ea) {\n\t\t\t return ea && ea.target &&\n\t\t\t\t\t(ea.target == oldNode.target || (ea.target.eq && ea.target.eq(oldNode.target)))\n\t\t\t});\n\t\t\tif (!newNode)\n\t\t\t\tnewNode = nodes.detect(function(ea) {return ea && ea.asString() === oldNode.asString()});\n\t this['set' + paneName + 'Selection'](newNode, true);\n\t\t}.bind(this);\n\t\n\t\tthis.start(); // select rootNode and generate new subnodes\n\n\t\trevertStateOfPane('Pane1', oldN1);\n\t\trevertStateOfPane('Pane2', oldN2);\n\t\trevertStateOfPane('Pane3', oldN3);\n\t\trevertStateOfPane('Pane4', oldN4);\n\n\t\tif (!src) {\n\t\t\tthis.panel.sourcePane.setVerticalScrollPosition(sourcePos);\n\t\t\treturn;\n\t\t}\n\n\t\t//this.setSourceString(src);\n\t\tvar text = this.panel.sourcePane.innerMorph();\n\t\ttext.setTextString(src.toString())\n\t\tthis.panel.sourcePane.setVerticalScrollPosition(sourcePos);\n\t\t// text.changed()\n\t\ttext.showChangeClue(); // FIXME\n\t},\n\n nodeChanged: function(node) {\n // currently update everything, this isn't really necessary\n \t\tthis.allChanged();\n },\n \n\ttextChanged: function(node) {\n\t\t// be careful -- this can lead to overwritten source code\n\t\tvar pane = this.paneNameOfNode(node);\n\t\tif (!pane) return;\n\t\tthis.inPaneSelectNodeMatching(pane, Functions.False); // unselect\n\t\tthis.inPaneSelectNodeMatching(pane, function(other) { return other.target == node.target });\n\t\t// this.setSourceString(node.sourceString());\n\t},\n \n\tsignalNewSource: function(changedNode) {\n\t\tthis.mySourceControl().updateBrowsers(this, changedNode);\n\t},\n\n\tupdateTitle: function() {\n\t\tvar window = this.panel.owner;\n\t\tif (!window) return;\n\t\tvar n1 = this.getPane1Selection();\n\t var n2 = this.getPane2Selection();\n\t var n3 = this.getPane3Selection();\n\t\tvar n4 = this.getPane4Selection();\n\t\tvar title = '';\n\t\tif (n1) title += n1.asString();\n\t\tif (n2) title += ':' + n2.asString();\n\t\tif (n3) title += ':' + n3.asString();\n\t\tif (n4) title += ':' + n4.asString();\n\t\twindow.setTitle(title);\n\t},\n\n},\n'browser related', {\n\n installFilter: function(filter, paneName) {\n\t\tvar getter = 'get' + paneName + 'Filters';\n\t\tvar setter = 'set' + paneName + 'Filters';\n \tthis[setter](this[getter]().concat([filter]).uniq());\n },\n\n uninstallFilters: function(testFunc, paneName) {\n \t// testFunc returns true if the filter should be removed\n\t\tvar getter = 'get' + paneName + 'Filters';\n\t\tvar setter = 'set' + paneName + 'Filters';\n \tthis[setter](this[getter]().reject(testFunc));\n },\n\n\tcommandMenuSpec: function(pane) {\n\t\tvar result = this.commands()\n\t\t\t.collect(function(ea) { return new ea(this) }, this)\n\t\t\t.select(function(ea) { return ea.wantsMenu() && ea.isActive(pane) })\n\t\t\t.inject([], function(all, ea) { return all.concat(ea.trigger()) });\n\t\tif (result.length > 0)\n\t\t\tresult.unshift(['-------']);\n\t\treturn result;\n\t},\n\n\tsetStatusMessage: function(msg, color, delay) {\n\t\tvar s = this.panel.sourcePane;\t\n\t\tif (!this._statusMorph) {\n\t\t\tthis._statusMorph = new TextMorph(pt(300,30).extentAsRectangle());\n\t\t\tthis._statusMorph.applyStyle({borderWidth: 0, strokeOpacity: 0})\n\t\t}\n\t\tvar statusMorph = this._statusMorph;\n\t\tstatusMorph.setTextString(msg);\n\t\ts.addMorph(statusMorph);\n\t\tstatusMorph.setTextColor(color || Color.black);\n\t\tstatusMorph.centerAt(s.innerBounds().center());\n\t\t(function() { statusMorph.remove() }).delay(delay || 2);\n\t},\n\n\tconfirm: function(question, callback) {\n\t\tWorldMorph.current().confirm(question, callback.bind(this));\n\t},\n\n\tensureSourceNotAccidentlyDeleted: function(callback) {\n\t\t// checks if the source code has unsaved changes if it hasn't or if the\n\t\t// user wants to discard them then run the callback\n\t\t// otherwise do nothing\n\t\tif (!this.hasUnsavedChanges()) {\n\t\t\tcallback.apply(this);\n\t\t\treturn;\n\t\t}\n\t\tthis.confirm('There are unsaved changes. Discard them?',\n\t\t\tfunction(answer) { answer && callback.apply(this) });\n\t},\n\n},\n'source pane', {\n\tselectStringInSourcePane: function(string) {\n\t\tvar textMorph =\tthis.panel.sourcePane.innerMorph(),\n\t\t\tindex = textMorph.textString.indexOf(string);\n\t\ttextMorph.setSelectionRange(index, index + string.length)\n\t\ttextMorph.requestKeyboardFocus(WorldMorph.current().firstHand())\n\t},\n});\n\nPanelMorph.subclass('lively.ide.BrowserPanel', {\n\n\tdocumentation: 'Hack for deserializing my browser widget',\n\n\topenForDragAndDrop: false,\n\t\n\tonDeserialize: function($super) {\n\t\tvar widget = new this.ownerWidget.constructor();\n\t\tif (widget instanceof lively.ide.WikiCodeBrowser) return; // FIXME deserialize wiki browser\n\t\tvar selection = this.getSelectionSpec();\n\t\tif (this.targetURL) widget.targetURL = this.targetURL;\n\t\tthis.owner.targetMorph = this.owner.addMorph(widget.buildView(this.getExtent()));\n\t\tthis.owner.targetMorph.setPosition(this.getPosition());\n\t\tthis.remove();\n\t\tthis.resetSelection(selection, widget);\n },\n\n\tgetPane: function(pane) { return this[pane] && this[pane].innerMorph() },\n\t\n\tgetSelectionTextOfPane: function(pane) {\n\t\tvar pane = this.getPane(pane);\n\t\tif (!pane) return null;\n\t\tvar index = pane.selectedLineNo;\n\t\tif (index === undefined) return null;\n\t\tvar textItem = pane.submorphs[index];\n\t\treturn textItem && textItem.textString;\n\t},\n\n\tgetSelectionSpec: function() {\n\t\tvar basicPaneName = 'Pane', spec = {}, i = 1;\n\t\twhile (1) {\n\t\t\tvar paneName = basicPaneName + i;\n\t\t\tvar sel = this.getSelectionTextOfPane(paneName);\n\t\t\tif (!sel) return spec;\n\t\t\tspec[paneName] = sel;\n\t\t\ti++;\n\t\t}\t\t\t\n\t},\n\t\n\tresetSelection: function(selectionSpec, widget) {\n\t\tfor (var paneName in selectionSpec)\n\t\t\twidget.inPaneSelectNodeNamed(paneName, selectionSpec[paneName]);\n\t},\n\n\tshutdown: function($super) {\n\t\t$super();\n\t\tvar browser = this.ownerWidget;\n\t\tif (!browser.stop) {\n\t\t\tconsole.log('cannot unregister browser: ' + browser);\n\t\t\treturn;\n\t\t}\n\t\tconsole.log('unregister browser: ' + browser);\n\t\tbrowser.stop();\n\t},\n\n});\n\nObject.subclass('lively.ide.BrowserNode',\n'documentation', {\n\tdocumentation: 'Abstract node, defining the node interface',\n},\n'initializing', {\n\tinitialize: function(target, browser, parent) {\n\t\tthis.target = target;\n\t\tthis.browser = browser;\n\t\tthis.parent = parent;\n\t},\n},\n'accessing', {\n\tsiblingNodes: function() { return this.browser.siblingsFor(this) },\n\tparent: function() { return this.parent },\n\tchildNodes: function() { return [] },\n\tsourceString: function() { return this.browser.emptyText },\n},\n'conversion', {\n\tasString: function() { return 'no name for node of type ' + this.constructor.type },\n\tasListItem: function() {\n\t\t//FIXME make class listitem\n\t\tvar node = this;\n\t\treturn {\n\t\t\tisListItem: true,\n\t\t\tstring: this.asString(),\n\t\t\tvalue: this,\n\t\t\tonDrop: function(item) { node.onDrop( item && item.value) },\t//convert to node\n\t\t\tonDrag: function() { node.onDrag() },\n\t\t};\n\t},\n},\n'testing', {\n\thasSimilarTarget: function(other) {\n\t\tif (!other)\n\t\t\treturn false;\n\t\tvar myString = this.asString();\n\t\tvar otherString = other.asString();\n\t\treturn myString.length >= otherString.length ?\n\t\tmyString.include(otherString) :\n\t\totherString.include(myString);\n\t},\n},\n'source code management', {\n\tnewSource: function(newSource) {\n\t\tvar errorOccurred = false,\n\t\t\tfailureOccurred = false,\n\t\t\tmsg = 'Saving ' + this.target.getName() + '...\\n',\n\t\t\tsrcCtrl = this.target.getSourceControl ? this.target.getSourceControl() : lively.ide.SourceControl;\n\n\t\t// save source\n\t\ttry {\n\t\t\tif (this.saveSource(newSource, srcCtrl)) {\n\t\t\t\tmsg += 'Successfully saved';\n\t\t\t} else {\n\t\t\t\tmsg += 'Couldn\\'t save';\n\t\t\t\tfailureOccurred = true;\n\t\t\t} \n\t\t} catch(e) {\n\t\t\tdbgOn(true)\n\t\t\tmsg += 'Error while saving: ' + e;\n\t\t\terrorOccurred = true;\n\t\t}\n\n\t\tmsg += '\\n';\n\t\t\n\t\t// eval source\n\t\ttry {\n\t\t\tif (this.evalSource(newSource)) {\n\t\t\t\tmsg += 'Successfully evaluated ' + this.target.getName();\n\t\t\t} else {\n\t\t\t\tmsg += 'Eval disabled for ' + this.target.getName();\n\t\t\t\tfailureOccurred = true;\n\t\t\t}\n\t\t} catch(e) {\n\t\t\tmsg += 'Error evaluating ' + e;\n\t\t\t// TODO don't reference UI directly? \n\t\t\tthis.browser.panel.sourcePane.innerMorph().showError(e)\n\t\t\terrorOccurred = true;\n\t\t}\n\t\tvar color = errorOccurred ? Color.red : (failureOccurred ? Color.black : Color.green);\n\t\tvar delay = errorOccurred ? 5 : null;\n\t\tthis.statusMessage(msg, color, delay);\n\t\tthis.browser.signalNewSource(this);\n\t},\n evalSource: function(newSource) { return false }, \n saveSource: function(newSource, sourceControl) { return false },\n},\n'menu', {\n menuSpec: function() { return [] },\n},\n'logging and feedback', {\n statusMessage: function(string, optColor, optDelay) {\n\t\tconsole.log('Browser statusMessage: ' + string);\n this.browser && this.browser.setStatusMessage(string, optColor, optDelay);\n },\n},\n'updating', { \n signalChange: function() { this.browser.nodeChanged(this) },\n\tsignalTextChange: function() { this.browser.textChanged(this) },\n\tonSelect: function() { },\n},\n'dragging and dropping', {\n\tonDrag: function() { console.log(this.asString() + 'was dragged') },\n\tonDrop: function(nodeDroppedOntoOrNull) { console.log(this.asString() + 'was dropped') },\n\thandleDrop: function(nodeDroppedOntoMe) {\n\t\t// for double dispatch\n\t\treturn false;\n\t},\n},\n'file framgent support -- FIXME', {\n\tmergeFileFragment: function(fileFragment) {\n\t\t// for a node that represents multiple FileFragments\n\t\treturn false\n\t},\n});\n\nObject.subclass('lively.ide.BrowserCommand', {\n\n\tinitialize: function(browser) { this.browser = browser },\n\n\twantsButton: Functions.False,\n\n\twantsMenu: Functions.False,\n\n\tisActive: Functions.False,\n\n\tasString: function() { return 'unnamed command' },\n\n\ttrigger: function() {},\n\n\tworld: function() { return WorldMorph.current() },\n\n});\n\nObject.subclass('lively.ide.NodeFilter', {\n\tapply: function(nodes) { return nodes }\n});\n\nlively.ide.NodeFilter.subclass('lively.ide.SortFilter', {\n\tapply: function(nodes) {\n\t\treturn nodes.sort(function(a,b) {\n\t\t\tif (a.asString().toLowerCase() < b.asString().toLowerCase()) return -1;\n\t\t\tif (a.asString().toLowerCase() > b.asString().toLowerCase()) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n});\n\nlively.ide.NodeFilter.subclass('lively.ide.NodeTypeFilter', {\n\n\tdocumentation: 'allows only nodes of the specified class',\n\tisNodeTypeFilter: true,\n\n\tinitialize: function(attrsThatShouldBeTrue) {\n\t\tthis.attributes = attrsThatShouldBeTrue;\n\t},\t\n\n\tapply: function(nodes) {\n\t\tvar attrs = this.attributes;\n\t\tif (!attrs) {\n\t\t\tconsole.log('nodeTypeFilter has no attributes!!!');\n\t\t\treturn nodes;\n\t\t}\n\t\treturn nodes.select(function(node) {\n\t\t\treturn attrs.any(function(attr) { return node[attr] });\n\t\t});\n\t}\n});\n\nObject.extend(lively.ide.NodeTypeFilter, {\n\tdefaultInstance: function() {\n\t\treturn new lively.ide.NodeTypeFilter([\n\t\t\t'isClassNode',\n\t\t\t'isGrammarNode',\n\t\t\t'isChangeNode',\n\t\t\t'isFunctionNode',\n\t\t\t'isObjectNode']);\n\t},\n});\n\n}) // end of module","shape":{"__isSmartRef__":true,"id":597},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":900,"_MaxTextHeight":860,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"scroll","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":600},"_Position":{"__isSmartRef__":true,"id":609},"textColor":{"__isSmartRef__":true,"id":63},"owner":{"__isSmartRef__":true,"id":475},"attributeConnections":[{"__isSmartRef__":true,"id":610}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"597":{"position":{"__isSmartRef__":true,"id":598},"extent":{"__isSmartRef__":true,"id":599},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":64},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"598":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"599":{"x":900,"y":860,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"600":{"morph":{"__isSmartRef__":true,"id":596},"dispatchTable":{"__isSmartRef__":true,"id":601},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"601":{"mouseup":{"__isSmartRef__":true,"id":602},"mousedown":{"__isSmartRef__":true,"id":603},"selectstart":{"__isSmartRef__":true,"id":604},"mousewheel":{"__isSmartRef__":true,"id":605},"keydown":{"__isSmartRef__":true,"id":606},"keyup":{"__isSmartRef__":true,"id":607},"keypress":{"__isSmartRef__":true,"id":608}},"602":{"type":"mouseup","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"603":{"type":"mousedown","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"604":{"type":"selectstart","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"605":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"606":{"type":"keydown","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"607":{"type":"keyup","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"608":{"type":"keypress","target":{"__isSmartRef__":true,"id":596},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"609":{"x":0,"y":40,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"610":{"sourceObj":{"__isSmartRef__":true,"id":596},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":491},"targetMethodName":"saveFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"611":{"position":{"__isSmartRef__":true,"id":612},"extent":{"__isSmartRef__":true,"id":613},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":614},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"612":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"613":{"x":900,"y":900,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"614":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"615":{"morph":{"__isSmartRef__":true,"id":475},"dispatchTable":{"__isSmartRef__":true,"id":616},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"616":{"mouseup":{"__isSmartRef__":true,"id":617},"mousedown":{"__isSmartRef__":true,"id":618},"mousewheel":{"__isSmartRef__":true,"id":619}},"617":{"type":"mouseup","target":{"__isSmartRef__":true,"id":475},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"618":{"type":"mousedown","target":{"__isSmartRef__":true,"id":475},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"619":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":475},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"620":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"621":{"submorphs":[{"__isSmartRef__":true,"id":622},{"__isSmartRef__":true,"id":632},{"__isSmartRef__":true,"id":646},{"__isSmartRef__":true,"id":672},{"__isSmartRef__":true,"id":698}],"scripts":[],"id":1440,"shape":{"__isSmartRef__":true,"id":724},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":727},"_Position":{"__isSmartRef__":true,"id":732},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":622},"windowMorph":{"__isSmartRef__":true,"id":474},"label":{"__isSmartRef__":true,"id":632},"closeButton":{"__isSmartRef__":true,"id":646},"menuButton":{"__isSmartRef__":true,"id":672},"collapseButton":{"__isSmartRef__":true,"id":698},"owner":{"__isSmartRef__":true,"id":474},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"622":{"submorphs":[],"scripts":[],"id":1441,"shape":{"__isSmartRef__":true,"id":623},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":626},"_Position":{"__isSmartRef__":true,"id":631},"owner":{"__isSmartRef__":true,"id":621},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"623":{"position":{"__isSmartRef__":true,"id":624},"extent":{"__isSmartRef__":true,"id":625},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":63},"fill":{"__isSmartRef__":true,"id":222},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"624":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"625":{"x":900,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"626":{"morph":{"__isSmartRef__":true,"id":622},"dispatchTable":{"__isSmartRef__":true,"id":627},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"627":{"mouseup":{"__isSmartRef__":true,"id":628},"mousedown":{"__isSmartRef__":true,"id":629},"mousewheel":{"__isSmartRef__":true,"id":630}},"628":{"type":"mouseup","target":{"__isSmartRef__":true,"id":622},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"629":{"type":"mousedown","target":{"__isSmartRef__":true,"id":622},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"630":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":622},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"631":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"632":{"submorphs":[],"scripts":[],"id":1442,"cachedTextString":"TextEditor","shape":{"__isSmartRef__":true,"id":633},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":636},"_Position":{"__isSmartRef__":true,"id":645},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":243},"owner":{"__isSmartRef__":true,"id":621},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"633":{"position":{"__isSmartRef__":true,"id":634},"extent":{"__isSmartRef__":true,"id":635},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"634":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"635":{"x":80,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"636":{"morph":{"__isSmartRef__":true,"id":632},"dispatchTable":{"__isSmartRef__":true,"id":637},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"637":{"mouseup":{"__isSmartRef__":true,"id":638},"mousedown":{"__isSmartRef__":true,"id":639},"selectstart":{"__isSmartRef__":true,"id":640},"mousewheel":{"__isSmartRef__":true,"id":641},"keydown":{"__isSmartRef__":true,"id":642},"keyup":{"__isSmartRef__":true,"id":643},"keypress":{"__isSmartRef__":true,"id":644}},"638":{"type":"mouseup","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"639":{"type":"mousedown","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"640":{"type":"selectstart","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"641":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"642":{"type":"keydown","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"643":{"type":"keyup","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"644":{"type":"keypress","target":{"__isSmartRef__":true,"id":632},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"645":{"x":410,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"646":{"submorphs":[{"__isSmartRef__":true,"id":647}],"scripts":[],"id":1443,"shape":{"__isSmartRef__":true,"id":661},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":664},"label":{"__isSmartRef__":true,"id":647},"owner":{"__isSmartRef__":true,"id":621},"attributeConnections":[{"__isSmartRef__":true,"id":669},{"__isSmartRef__":true,"id":670}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":671},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"647":{"submorphs":[],"scripts":[],"id":1444,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":648},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":651},"_Position":{"__isSmartRef__":true,"id":660},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":646},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"648":{"position":{"__isSmartRef__":true,"id":649},"extent":{"__isSmartRef__":true,"id":650},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"649":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"650":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"651":{"morph":{"__isSmartRef__":true,"id":647},"dispatchTable":{"__isSmartRef__":true,"id":652},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"652":{"mouseup":{"__isSmartRef__":true,"id":653},"mousedown":{"__isSmartRef__":true,"id":654},"selectstart":{"__isSmartRef__":true,"id":655},"mousewheel":{"__isSmartRef__":true,"id":656},"keydown":{"__isSmartRef__":true,"id":657},"keyup":{"__isSmartRef__":true,"id":658},"keypress":{"__isSmartRef__":true,"id":659}},"653":{"type":"mouseup","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"654":{"type":"mousedown","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"655":{"type":"selectstart","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"656":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"657":{"type":"keydown","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"658":{"type":"keyup","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"659":{"type":"keypress","target":{"__isSmartRef__":true,"id":647},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"660":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"661":{"position":{"__isSmartRef__":true,"id":662},"extent":{"__isSmartRef__":true,"id":663},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"662":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"663":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"664":{"morph":{"__isSmartRef__":true,"id":646},"dispatchTable":{"__isSmartRef__":true,"id":665},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"665":{"mouseup":{"__isSmartRef__":true,"id":666},"mousedown":{"__isSmartRef__":true,"id":667},"mousewheel":{"__isSmartRef__":true,"id":668}},"666":{"type":"mouseup","target":{"__isSmartRef__":true,"id":646},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"667":{"type":"mousedown","target":{"__isSmartRef__":true,"id":646},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"668":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":646},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"669":{"sourceObj":{"__isSmartRef__":true,"id":646},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":474},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"670":{"sourceObj":{"__isSmartRef__":true,"id":646},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":474},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"671":{"x":881,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"672":{"submorphs":[{"__isSmartRef__":true,"id":673}],"scripts":[],"id":1445,"shape":{"__isSmartRef__":true,"id":687},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":690},"label":{"__isSmartRef__":true,"id":673},"owner":{"__isSmartRef__":true,"id":621},"attributeConnections":[{"__isSmartRef__":true,"id":695},{"__isSmartRef__":true,"id":696}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":697},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"673":{"submorphs":[],"scripts":[],"id":1446,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":674},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":677},"_Position":{"__isSmartRef__":true,"id":686},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":672},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"674":{"position":{"__isSmartRef__":true,"id":675},"extent":{"__isSmartRef__":true,"id":676},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"675":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"676":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"677":{"morph":{"__isSmartRef__":true,"id":673},"dispatchTable":{"__isSmartRef__":true,"id":678},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"678":{"mouseup":{"__isSmartRef__":true,"id":679},"mousedown":{"__isSmartRef__":true,"id":680},"selectstart":{"__isSmartRef__":true,"id":681},"mousewheel":{"__isSmartRef__":true,"id":682},"keydown":{"__isSmartRef__":true,"id":683},"keyup":{"__isSmartRef__":true,"id":684},"keypress":{"__isSmartRef__":true,"id":685}},"679":{"type":"mouseup","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"680":{"type":"mousedown","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"681":{"type":"selectstart","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"682":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"683":{"type":"keydown","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"684":{"type":"keyup","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"685":{"type":"keypress","target":{"__isSmartRef__":true,"id":673},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"686":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"687":{"position":{"__isSmartRef__":true,"id":688},"extent":{"__isSmartRef__":true,"id":689},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"688":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"689":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"690":{"morph":{"__isSmartRef__":true,"id":672},"dispatchTable":{"__isSmartRef__":true,"id":691},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"691":{"mouseup":{"__isSmartRef__":true,"id":692},"mousedown":{"__isSmartRef__":true,"id":693},"mousewheel":{"__isSmartRef__":true,"id":694}},"692":{"type":"mouseup","target":{"__isSmartRef__":true,"id":672},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"693":{"type":"mousedown","target":{"__isSmartRef__":true,"id":672},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"694":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":672},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"695":{"sourceObj":{"__isSmartRef__":true,"id":672},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":474},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"696":{"sourceObj":{"__isSmartRef__":true,"id":672},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":474},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"697":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"698":{"submorphs":[{"__isSmartRef__":true,"id":699}],"scripts":[],"id":1447,"shape":{"__isSmartRef__":true,"id":713},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":716},"label":{"__isSmartRef__":true,"id":699},"owner":{"__isSmartRef__":true,"id":621},"attributeConnections":[{"__isSmartRef__":true,"id":721},{"__isSmartRef__":true,"id":722}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":723},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"699":{"submorphs":[],"scripts":[],"id":1448,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":700},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":703},"_Position":{"__isSmartRef__":true,"id":712},"textColor":{"__isSmartRef__":true,"id":63},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":698},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"700":{"position":{"__isSmartRef__":true,"id":701},"extent":{"__isSmartRef__":true,"id":702},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":63},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"701":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"702":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"703":{"morph":{"__isSmartRef__":true,"id":699},"dispatchTable":{"__isSmartRef__":true,"id":704},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"704":{"mouseup":{"__isSmartRef__":true,"id":705},"mousedown":{"__isSmartRef__":true,"id":706},"selectstart":{"__isSmartRef__":true,"id":707},"mousewheel":{"__isSmartRef__":true,"id":708},"keydown":{"__isSmartRef__":true,"id":709},"keyup":{"__isSmartRef__":true,"id":710},"keypress":{"__isSmartRef__":true,"id":711}},"705":{"type":"mouseup","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"706":{"type":"mousedown","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"707":{"type":"selectstart","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"708":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"709":{"type":"keydown","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"710":{"type":"keyup","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"711":{"type":"keypress","target":{"__isSmartRef__":true,"id":699},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"712":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"713":{"position":{"__isSmartRef__":true,"id":714},"extent":{"__isSmartRef__":true,"id":715},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"714":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"715":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"716":{"morph":{"__isSmartRef__":true,"id":698},"dispatchTable":{"__isSmartRef__":true,"id":717},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"717":{"mouseup":{"__isSmartRef__":true,"id":718},"mousedown":{"__isSmartRef__":true,"id":719},"mousewheel":{"__isSmartRef__":true,"id":720}},"718":{"type":"mouseup","target":{"__isSmartRef__":true,"id":698},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"719":{"type":"mousedown","target":{"__isSmartRef__":true,"id":698},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"720":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":698},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"721":{"sourceObj":{"__isSmartRef__":true,"id":698},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":474},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"722":{"sourceObj":{"__isSmartRef__":true,"id":698},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":474},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"723":{"x":862,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"724":{"position":{"__isSmartRef__":true,"id":725},"extent":{"__isSmartRef__":true,"id":726},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"725":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"726":{"x":900,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"727":{"morph":{"__isSmartRef__":true,"id":621},"dispatchTable":{"__isSmartRef__":true,"id":728},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"728":{"mouseup":{"__isSmartRef__":true,"id":729},"mousedown":{"__isSmartRef__":true,"id":730},"mousewheel":{"__isSmartRef__":true,"id":731}},"729":{"type":"mouseup","target":{"__isSmartRef__":true,"id":621},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"730":{"type":"mousedown","target":{"__isSmartRef__":true,"id":621},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"731":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":621},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"732":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"733":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":734},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"734":{"x":900,"y":928.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"735":{"morph":{"__isSmartRef__":true,"id":474},"dispatchTable":{"__isSmartRef__":true,"id":736},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"736":{"mouseup":{"__isSmartRef__":true,"id":737},"mousedown":{"__isSmartRef__":true,"id":738},"mousewheel":{"__isSmartRef__":true,"id":739}},"737":{"type":"mouseup","target":{"__isSmartRef__":true,"id":474},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"738":{"type":"mousedown","target":{"__isSmartRef__":true,"id":474},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"739":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":474},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"740":{"x":22,"y":957,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"741":{"submorphs":[{"__isSmartRef__":true,"id":742},{"__isSmartRef__":true,"id":901}],"scripts":[],"id":1470,"shape":{"__isSmartRef__":true,"id":1015},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1017},"_Position":{"__isSmartRef__":true,"id":1022},"targetMorph":{"__isSmartRef__":true,"id":742},"titleBar":{"__isSmartRef__":true,"id":901},"contentOffset":{"__isSmartRef__":true,"id":900},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Widgets","owner":{"__isSmartRef__":true,"id":0},"_Rotation":0,"__LivelyClassName__":"lively.morphic.Window"},"742":{"submorphs":[{"__isSmartRef__":true,"id":743},{"__isSmartRef__":true,"id":763},{"__isSmartRef__":true,"id":808},{"__isSmartRef__":true,"id":842},{"__isSmartRef__":true,"id":876}],"scripts":[],"id":1430,"shape":{"__isSmartRef__":true,"id":891},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":895},"_Position":{"__isSmartRef__":true,"id":900},"urlText":{"__isSmartRef__":true,"id":743},"contentMorph":{"__isSmartRef__":true,"id":876},"owner":{"__isSmartRef__":true,"id":741},"ownerApp":{"__isSmartRef__":true,"id":760},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"743":{"submorphs":[],"scripts":[],"id":1431,"cachedTextString":"http://lively-kernel.org/repository/webwerkstatt/lively/ide/BrowserFramework.js","shape":{"__isSmartRef__":true,"id":744},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":20,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"hidden","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":749},"_Position":{"__isSmartRef__":true,"id":758},"textColor":{"__isSmartRef__":true,"id":747},"isInputLine":true,"owner":{"__isSmartRef__":true,"id":742},"attributeConnections":[{"__isSmartRef__":true,"id":759}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"savedTextString":"http://lively-kernel.org/repository/webwerkstatt/lively/ide/BrowserFramework.js","__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"744":{"position":{"__isSmartRef__":true,"id":745},"extent":{"__isSmartRef__":true,"id":746},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":747},"fill":{"__isSmartRef__":true,"id":748},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"745":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"746":{"x":898,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"747":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"748":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"749":{"morph":{"__isSmartRef__":true,"id":743},"dispatchTable":{"__isSmartRef__":true,"id":750},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"750":{"mouseup":{"__isSmartRef__":true,"id":751},"mousedown":{"__isSmartRef__":true,"id":752},"selectstart":{"__isSmartRef__":true,"id":753},"mousewheel":{"__isSmartRef__":true,"id":754},"keydown":{"__isSmartRef__":true,"id":755},"keyup":{"__isSmartRef__":true,"id":756},"keypress":{"__isSmartRef__":true,"id":757}},"751":{"type":"mouseup","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"752":{"type":"mousedown","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"753":{"type":"selectstart","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"754":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"755":{"type":"keydown","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"756":{"type":"keyup","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"757":{"type":"keypress","target":{"__isSmartRef__":true,"id":743},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"758":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"759":{"sourceObj":{"__isSmartRef__":true,"id":743},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":760},"targetMethodName":"setCurrentURL","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"760":{"attributeConnections":[{"__isSmartRef__":true,"id":761}],"doNotSerialize":["$$currentURL"],"doNotCopyProperties":["$$currentURL"],"currentURL":{"__isSmartRef__":true,"id":762},"panel":{"__isSmartRef__":true,"id":742},"view":{"__isSmartRef__":true,"id":741},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TextEditor"},"761":{"sourceObj":{"__isSmartRef__":true,"id":760},"sourceAttrName":"currentURL","targetObj":{"__isSmartRef__":true,"id":760},"targetMethodName":"loadFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"762":{"protocol":"http:","hostname":"lively-kernel.org","pathname":"/repository/webwerkstatt/lively/ide/BrowserFramework.js","__SourceModuleName__":"Global.lively.Network","__LivelyClassName__":"URL"},"763":{"submorphs":[{"__isSmartRef__":true,"id":764}],"scripts":[],"id":1432,"shape":{"__isSmartRef__":true,"id":778},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":792},"_Position":{"__isSmartRef__":true,"id":797},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":782},"lighterFill":{"__isSmartRef__":true,"id":798},"label":{"__isSmartRef__":true,"id":764},"owner":{"__isSmartRef__":true,"id":742},"attributeConnections":[{"__isSmartRef__":true,"id":807}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Button"},"764":{"submorphs":[],"scripts":[],"id":1433,"cachedTextString":"save","shape":{"__isSmartRef__":true,"id":765},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":768},"_Position":{"__isSmartRef__":true,"id":777},"textColor":{"__isSmartRef__":true,"id":747},"owner":{"__isSmartRef__":true,"id":763},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"765":{"position":{"__isSmartRef__":true,"id":766},"extent":{"__isSmartRef__":true,"id":767},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"766":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"767":{"x":300,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"768":{"morph":{"__isSmartRef__":true,"id":764},"dispatchTable":{"__isSmartRef__":true,"id":769},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"769":{"mouseup":{"__isSmartRef__":true,"id":770},"mousedown":{"__isSmartRef__":true,"id":771},"selectstart":{"__isSmartRef__":true,"id":772},"mousewheel":{"__isSmartRef__":true,"id":773},"keydown":{"__isSmartRef__":true,"id":774},"keyup":{"__isSmartRef__":true,"id":775},"keypress":{"__isSmartRef__":true,"id":776}},"770":{"type":"mouseup","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"771":{"type":"mousedown","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"772":{"type":"selectstart","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"773":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"774":{"type":"keydown","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"775":{"type":"keyup","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"776":{"type":"keypress","target":{"__isSmartRef__":true,"id":764},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"777":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"778":{"position":{"__isSmartRef__":true,"id":779},"extent":{"__isSmartRef__":true,"id":780},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":781},"fill":{"__isSmartRef__":true,"id":782},"borderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"779":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"780":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"781":{"r":0.4,"g":0.4,"b":0.4,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"782":{"stops":[{"__isSmartRef__":true,"id":783},{"__isSmartRef__":true,"id":785},{"__isSmartRef__":true,"id":787},{"__isSmartRef__":true,"id":789}],"vector":{"__isSmartRef__":true,"id":791},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"783":{"offset":0,"color":{"__isSmartRef__":true,"id":784}},"784":{"r":0.9600000000000001,"g":0.9600000000000001,"b":0.9600000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"785":{"offset":0.4,"color":{"__isSmartRef__":true,"id":786}},"786":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"787":{"offset":0.6,"color":{"__isSmartRef__":true,"id":788}},"788":{"r":0.8200000000000001,"g":0.8200000000000001,"b":0.8200000000000001,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"789":{"offset":1,"color":{"__isSmartRef__":true,"id":790}},"790":{"r":0.94,"g":0.94,"b":0.94,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"791":{"x":0,"y":0,"width":0,"height":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"792":{"morph":{"__isSmartRef__":true,"id":763},"dispatchTable":{"__isSmartRef__":true,"id":793},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"793":{"mouseup":{"__isSmartRef__":true,"id":794},"mousedown":{"__isSmartRef__":true,"id":795},"mousewheel":{"__isSmartRef__":true,"id":796}},"794":{"type":"mouseup","target":{"__isSmartRef__":true,"id":763},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"795":{"type":"mousedown","target":{"__isSmartRef__":true,"id":763},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"796":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":763},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"797":{"x":0,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"798":{"stops":[{"__isSmartRef__":true,"id":799},{"__isSmartRef__":true,"id":801},{"__isSmartRef__":true,"id":803},{"__isSmartRef__":true,"id":805}],"vector":{"__isSmartRef__":true,"id":791},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"799":{"offset":0,"color":{"__isSmartRef__":true,"id":800}},"800":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"801":{"offset":0.4,"color":{"__isSmartRef__":true,"id":802}},"802":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"803":{"offset":0.6,"color":{"__isSmartRef__":true,"id":804}},"804":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"805":{"offset":1,"color":{"__isSmartRef__":true,"id":806}},"806":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"807":{"sourceObj":{"__isSmartRef__":true,"id":763},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":760},"targetMethodName":"saveFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"808":{"submorphs":[{"__isSmartRef__":true,"id":809}],"scripts":[],"id":1434,"shape":{"__isSmartRef__":true,"id":823},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":826},"_Position":{"__isSmartRef__":true,"id":831},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":782},"lighterFill":{"__isSmartRef__":true,"id":832},"label":{"__isSmartRef__":true,"id":809},"owner":{"__isSmartRef__":true,"id":742},"attributeConnections":[{"__isSmartRef__":true,"id":841}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Button"},"809":{"submorphs":[],"scripts":[],"id":1435,"cachedTextString":"load","shape":{"__isSmartRef__":true,"id":810},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":813},"_Position":{"__isSmartRef__":true,"id":822},"textColor":{"__isSmartRef__":true,"id":747},"owner":{"__isSmartRef__":true,"id":808},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"810":{"position":{"__isSmartRef__":true,"id":811},"extent":{"__isSmartRef__":true,"id":812},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"811":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"812":{"x":300,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"813":{"morph":{"__isSmartRef__":true,"id":809},"dispatchTable":{"__isSmartRef__":true,"id":814},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"814":{"mouseup":{"__isSmartRef__":true,"id":815},"mousedown":{"__isSmartRef__":true,"id":816},"selectstart":{"__isSmartRef__":true,"id":817},"mousewheel":{"__isSmartRef__":true,"id":818},"keydown":{"__isSmartRef__":true,"id":819},"keyup":{"__isSmartRef__":true,"id":820},"keypress":{"__isSmartRef__":true,"id":821}},"815":{"type":"mouseup","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"816":{"type":"mousedown","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"817":{"type":"selectstart","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"818":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"819":{"type":"keydown","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"820":{"type":"keyup","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"821":{"type":"keypress","target":{"__isSmartRef__":true,"id":809},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"822":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"823":{"position":{"__isSmartRef__":true,"id":824},"extent":{"__isSmartRef__":true,"id":825},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":781},"fill":{"__isSmartRef__":true,"id":782},"borderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"824":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"825":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"826":{"morph":{"__isSmartRef__":true,"id":808},"dispatchTable":{"__isSmartRef__":true,"id":827},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"827":{"mouseup":{"__isSmartRef__":true,"id":828},"mousedown":{"__isSmartRef__":true,"id":829},"mousewheel":{"__isSmartRef__":true,"id":830}},"828":{"type":"mouseup","target":{"__isSmartRef__":true,"id":808},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"829":{"type":"mousedown","target":{"__isSmartRef__":true,"id":808},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"830":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":808},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"831":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"832":{"stops":[{"__isSmartRef__":true,"id":833},{"__isSmartRef__":true,"id":835},{"__isSmartRef__":true,"id":837},{"__isSmartRef__":true,"id":839}],"vector":{"__isSmartRef__":true,"id":791},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"833":{"offset":0,"color":{"__isSmartRef__":true,"id":834}},"834":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"835":{"offset":0.4,"color":{"__isSmartRef__":true,"id":836}},"836":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"837":{"offset":0.6,"color":{"__isSmartRef__":true,"id":838}},"838":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"839":{"offset":1,"color":{"__isSmartRef__":true,"id":840}},"840":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"841":{"sourceObj":{"__isSmartRef__":true,"id":808},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":760},"targetMethodName":"loadFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"842":{"submorphs":[{"__isSmartRef__":true,"id":843}],"scripts":[],"id":1436,"shape":{"__isSmartRef__":true,"id":857},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":860},"_Position":{"__isSmartRef__":true,"id":865},"value":false,"toggle":false,"isActive":true,"normalFill":{"__isSmartRef__":true,"id":782},"lighterFill":{"__isSmartRef__":true,"id":866},"label":{"__isSmartRef__":true,"id":843},"owner":{"__isSmartRef__":true,"id":742},"attributeConnections":[{"__isSmartRef__":true,"id":875}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Button"},"843":{"submorphs":[],"scripts":[],"id":1437,"cachedTextString":"remove","shape":{"__isSmartRef__":true,"id":844},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":847},"_Position":{"__isSmartRef__":true,"id":856},"textColor":{"__isSmartRef__":true,"id":747},"owner":{"__isSmartRef__":true,"id":842},"isLabel":true,"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"844":{"position":{"__isSmartRef__":true,"id":845},"extent":{"__isSmartRef__":true,"id":846},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"845":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"846":{"x":300,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"847":{"morph":{"__isSmartRef__":true,"id":843},"dispatchTable":{"__isSmartRef__":true,"id":848},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"848":{"mouseup":{"__isSmartRef__":true,"id":849},"mousedown":{"__isSmartRef__":true,"id":850},"selectstart":{"__isSmartRef__":true,"id":851},"mousewheel":{"__isSmartRef__":true,"id":852},"keydown":{"__isSmartRef__":true,"id":853},"keyup":{"__isSmartRef__":true,"id":854},"keypress":{"__isSmartRef__":true,"id":855}},"849":{"type":"mouseup","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"850":{"type":"mousedown","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"851":{"type":"selectstart","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"852":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"853":{"type":"keydown","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"854":{"type":"keyup","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"855":{"type":"keypress","target":{"__isSmartRef__":true,"id":843},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"856":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"857":{"position":{"__isSmartRef__":true,"id":858},"extent":{"__isSmartRef__":true,"id":859},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":781},"fill":{"__isSmartRef__":true,"id":782},"borderRadius":5,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"858":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"859":{"x":300,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"860":{"morph":{"__isSmartRef__":true,"id":842},"dispatchTable":{"__isSmartRef__":true,"id":861},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"861":{"mouseup":{"__isSmartRef__":true,"id":862},"mousedown":{"__isSmartRef__":true,"id":863},"mousewheel":{"__isSmartRef__":true,"id":864}},"862":{"type":"mouseup","target":{"__isSmartRef__":true,"id":842},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"863":{"type":"mousedown","target":{"__isSmartRef__":true,"id":842},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"864":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":842},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"865":{"x":600,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"866":{"stops":[{"__isSmartRef__":true,"id":867},{"__isSmartRef__":true,"id":869},{"__isSmartRef__":true,"id":871},{"__isSmartRef__":true,"id":873}],"vector":{"__isSmartRef__":true,"id":791},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.LinearGradient"},"867":{"offset":0,"color":{"__isSmartRef__":true,"id":868}},"868":{"r":0.98,"g":0.98,"b":0.98,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"869":{"offset":0.4,"color":{"__isSmartRef__":true,"id":870}},"870":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"871":{"offset":0.6,"color":{"__isSmartRef__":true,"id":872}},"872":{"r":0.91,"g":0.91,"b":0.91,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"873":{"offset":1,"color":{"__isSmartRef__":true,"id":874}},"874":{"r":0.97,"g":0.97,"b":0.97,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"875":{"sourceObj":{"__isSmartRef__":true,"id":842},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":760},"targetMethodName":"removeFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"876":{"submorphs":[],"scripts":[],"id":1438,"cachedTextString":"module('lively.ide.BrowserFramework').requires('lively.bindings', Config.isNewMorphic ? 'lively.morphic.Widgets' : 'lively.Widgets').toRun(function() {\n\nWidget.subclass('lively.ide.BasicBrowser',\n'settings', {\n\tdocumentation: 'Abstract widget with three list panes and one text pane. Uses nodes to display and manipulate content.',\n\temptyText: '-----',\n\tconnections: ['targetURL', 'sourceString', 'pane1Selection', 'pane2Selection', 'pane3Selection', 'pane4Selection'],\n},\n'initializing', {\n\n\tinitialViewExtent: pt(820, 550),\n\n\tpanelSpec: [\n\t\t\t['locationPane', newTextPane, new Rectangle(0, 0, 0.8, 0.04)],\n\t\t\t['codeBaseDirBtn', function(bnds) { \n\t\t\t\t\treturn new ButtonMorph(bnds) }, new Rectangle(0.8, 0, 0.12, 0.04)],\n\t\t\t['localDirBtn', function(bnds) { \n\t\t\t\t\treturn new ButtonMorph(bnds) }, new Rectangle(0.92, 0, 0.08, 0.04)],\n\t\t\t['Pane1', newDragnDropListPane, new Rectangle(0, 0.05, 0.25, 0.35)],\n\t\t\t['Pane2', newDragnDropListPane, new Rectangle(0.25, 0.05, 0.25, 0.35)],\n\t\t\t['Pane3', newDragnDropListPane, new Rectangle(0.5, 0.05, 0.25, 0.35)],\n\t\t\t['Pane4', newDragnDropListPane, new Rectangle(0.75, 0.05, 0.25, 0.35)],\n\t\t\t['midResizer', function(bnds) { \n\t\t\t\t\treturn new HorizontalDivider(bnds) }, new Rectangle(0, 0.44, 1, 0.01)],\n\t\t\t['sourcePane', newTextPane, new Rectangle(0, 0.45, 1, 0.49)],\n\t\t\t['bottomResizer', function(bnds) { \n\t\t\t\t\treturn new HorizontalDivider(bnds) }, new Rectangle(0, 0.94, 1, 0.01)],\n\t\t\t['commentPane', newTextPane, new Rectangle(0, 0.95, 1, 0.05)]\n\t\t],\n\n\tallPaneNames: ['Pane1', 'Pane2', 'Pane3', 'Pane4'],\n\n\tfilterPlaces: ['Root', 'Pane1', 'Pane2', 'Pane3', 'Pane4'],\n\n\tformals: [\"Pane1Content\", \"Pane1Selection\", \"Pane1Menu\", \"Pane1Filters\",\n\t\t\t\"Pane2Content\", \"Pane2Selection\", \"Pane2Menu\", \"Pane2Filters\",\n\t\t\t\"Pane3Content\", \"Pane3Selection\", \"Pane3Menu\", \"Pane3Filters\",\n\t\t\t\"Pane4Content\", \"Pane4Selection\", \"Pane4Menu\", \"Pane4Filters\",\n\t\t\t\"SourceString\", \"StatusMessage\", \"RootFilters\"],\n\n\tinitialize: function($super) {\n\t\t$super();\n\n\t\t//create a model and relay for connecting the additional components later on\n\t\tvar formals = this.formals,\n\t\t\tdefaultValues = (function() {\n\t\t\t\treturn formals.inject({}, function(spec, ea) { spec[ea] = null; return spec });\n\t\t\t})(),\n\t\t\tmodel = Record.newPlainInstance(defaultValues);\n\n\t\tthis.initializeModelRelay(model);\n\n\t\tthis.buttonCommands = [];\n\t},\n\tinitializeModelRelay: function(actualModel) {\n\t\tvar panes = this.allPaneNames,\n\t\t\tspec = {SourceString: \"SourceString\", StatusMessage: \"StatusMessage\", RootFilters: \"RootFilters\"};\n\t\tpanes.forEach(function(ea) {\n\t\t\tspec[ea + 'Content'] = ea + 'Content';\n\t\t\tspec[ea + 'Selection'] = ea + 'Selection';\n\t\t\tspec[ea + 'Menu'] = ea + 'Menu';\n\t\t\tspec[ea + 'Filters'] = ea + 'Filters';\n\t\t});\n\t\tthis.relayToModel(actualModel, spec);\n\t\tthis.filterPlaces.forEach(function(ea) { /*identity filter*/\t\n\t\t\tthis['set' + ea + 'Filters']([new lively.ide.NodeFilter()]);\n\t\t}, this);\n\t},\n\n\t\n buildView: function (extent) {\n \n\t\textent = extent || this.initialViewExtent;\n\n this.start();\n \n\t\tvar panel = new lively.ide.BrowserPanel(extent);\n PanelMorph.makePanedPanel(extent, this.panelSpec, panel);\n\t\tthis.panel = panel;\n \n\t\tthis.setupListPanes();\n\t\tthis.setupSourceInput();\n\t\tthis.setupLocationInput();\n \n\t\t//panel.statusPane.connectModel(model.newRelay({Text: \"-StatusMessage\"}));\n\t\tthis.buildCommandButtons(panel);\n \t\tthis.setupResizers(panel);\n\n\t\tpanel.commentPane.linkToStyles([\"Browser_commentPane\"])\n\t\tpanel.commentPane.innerMorph().linkToStyles([\"Browser_commentPaneText\"])\n\t\tpanel.commentPane.clipMorph.setFill(null);\n\n\t\tpanel.ownerWidget = this;\n return panel;\n },\n\n\tsetupListPanes: function() {\n\t\tvar model = this.getModel(), browser = this;\n\t\tfunction setupListPane(paneName) {\n var morph = browser.panel[paneName];\n\t\t\t// morph.innerMorph().plugTo(model, {\n\t\t\t\t// selection: '->set' + paneName + 'Selection',\n\t\t\t\t// selection: '<-get' + paneName + 'Selection',\n\t\t\t\t// getList: '->get' + paneName + 'Content',\n\t\t\t\t// updateList: '<-set' + paneName + 'Content',\n\t\t\t// })\n morph.connectModel(model.newRelay({List: (\"-\" + paneName + \"Content\"),\n Selection: ( paneName + 'Selection'),\n Menu: (\"-\" + paneName + \"Menu\")}), true);\n morph.withAllSubmorphsDo(function() {\n\t\t\t\tif (this.constructor == SliderMorph) return;\n this.onMouseDown = this.onMouseDown.wrap(function(proceed, evt) {\n\t\t\t\t\tbrowser.ensureSourceNotAccidentlyDeleted(proceed.curry(evt));\n });\n })\n }\n\t\tthis.allPaneNames.each(function(ea) { setupListPane(ea) });\n\t},\n\n\tsetupSourceInput: function() {\n\t\tthis.sourceInput().maxSafeSize = 2e6;\n\t\t// this.sourceInput().styleClass = ['codePane'];\n\t\tthis.panel.sourcePane.connectModel(this.getModel().newRelay({Text: \"SourceString\"}));\n\t\t// this.panel.sourcePane.innerMorph().plugTo(this, {\n\t\t// \t\tsetTextString: '<-setSourceString',\n\t\t// \t\tsavedTextString: '->setSourceString',\n\t\t// \t});\n\t\t// \tthis.setSourceString('test');\n\n\t\tthis.panel.sourcePane.linkToStyles([\"Browser_codePane\"])\n\t\tthis.panel.sourcePane.innerMorph().linkToStyles([\"Browser_codePaneText\"])\n\t\tthis.panel.sourcePane.clipMorph.setFill(null);\n\n\t\t// lively.bindings.connect(this, 'sourceString', this.panel.sourcePane.innerMorph(), 'setTextString');\n\t\t// lively.bindings.connect(this.panel.sourcePane.innerMorph(), 'savedTextString', this, 'setSourceString');\n\t\t// lively.bindings.connect(this, 'sourceString', console, 'log',\n\t\t\t// {converter: function(v) { return v ? v : 'null----' }});\n\t},\n\t\n\tsetupLocationInput: function() {\n\t\tvar locInput = this.locationInput();\n\t\tif (!locInput) return;\n\t\tlocInput.beInputLine();\n\t\tlocInput.noEval = true;\n\t\tlocInput.linkToStyles([\"Browser_locationInput\"])\n\t},\n\t\n\tsetupResizers: function() {\n\t\tvar panel = this.panel;\n\t\t\n\t\t// for compatibility to old pages -- FIXME remove\n\t\tif (!panel.bottomResizer || !panel.midResizer) return \n\t\t\n\t\t// resizer in the middle resiszes top panes, buttons and source pane\n\t\tthis.allPaneNames.collect(function(name) {\n\t\t\tpanel.midResizer.addScalingAbove(panel[name]);\n\t\t});\n\t\tpanel.midResizer.addScalingBelow(panel.sourcePane)\n\n\t\t// buttons\n\t\tpanel.submorphs.forEach(function(m) {\n\t\t\tif (m.constructor == ButtonMorph && m != panel.codeBaseDirBtn && m != panel.localDirBtn)\n\t\t\t\tpanel.midResizer.addFixed(m);\n\t\t})\n\n\t\t// bottom resizer divides code and comment pane\n\t\tpanel.bottomResizer.addScalingAbove(panel.sourcePane)\n\t\tpanel.bottomResizer.addScalingBelow(panel.commentPane)\n\n\t\tpanel.bottomResizer.linkToStyles([\"Browser_resizer\"]);\n\t\tpanel.midResizer.linkToStyles([\"Browser_resizer\"]);\n\t},\n\t\n\tbuildCommandButtons: function(morph) {\n\t\tvar cmds = this.commands()\n\t\t\t.collect(function(ea) { return new ea(this) }, this)\n\t\t\t.select(function(ea) { return ea.wantsButton() });\n\t\tif (cmds.length === 0) return;\n\n\t\tvar height = Math.round(morph.getExtent().y * 0.04);\n\t\tvar width = morph.getExtent().x / cmds.length\n\t\tvar y = morph.getExtent().y * 0.44 - height;\n\n\t\tvar btns = cmds.forEach(function(cmd, i) {\n\t\t\t// Refactor me!!!\n\t\t\tvar btn = new ButtonMorph(new Rectangle(i*width, y, width, height));\n\t\t\tbtn.command = cmd; // used in connection\n\t\t\tbtn.setLabel(cmd.asString());\n\t\t\tlively.bindings.connect(btn, 'fire', cmd, 'trigger');\n\t\t\tlively.bindings.connect(btn, 'fire', btn, 'setLabel', {\n\t\t\t\tconverter: function() { return this.getSourceObj().command.asString() }\n\t\t\t});\n\t\t\t// *wuergs* mixed old model and connect FIXME!!!\n\t\t\tvar btnModel = {\n\t\t\t\tsetIsActive: function(val) { btn.onIsActiveUpdate(val) },\n\t\t\t\tgetIsActive: function(val) { return cmd.isActive() }\n\t\t\t};\n\t\t\tbtn.connectModel({model: btnModel, setIsActive: 'setIsActive', getIsActive: 'getIsActive'});\n\t\t\tcmd.button = btn; // used in onPaneXUpdate, to be removed!!!\n\n\t\t\tmorph.addMorph(btn);\n\t\t\tbtnModel.setIsActive(cmd.isActive());\n\t\t})\n\t\tthis.buttonCommands = cmds;\n\t},\n\n start: function() {\n this.setPane1Content(this.childsFilteredAndAsListItems(this.rootNode(), this.getRootFilters()));\n\t\tthis.mySourceControl().registerBrowser(this);\n },\n\t\n\tstop: function() {\n\t\tthis.mySourceControl().unregisterBrowser(this);\n },\n\n},\n'testing', {\n hasUnsavedChanges: function() {\n return this.panel.sourcePane.innerMorph().hasUnsavedChanges();\n },\n},\n'accessing', {\n\n\tcommands: function() { return [] },\n\n\tlocationInput: function() { return this.panel.locationPane && this.panel.locationPane.innerMorph() },\n\t\n\tsourceInput: function() { return this.panel.sourcePane.innerMorph() },\n\n\tmySourceControl: function() {\n\t\tvar ctrl = lively.ide.startSourceControl();\n\t\tif (!ctrl) throw new Error('Browser has no SourceControl!');\n\t\treturn ctrl;\n\t},\n},\n'browser nodes', {\n\n rootNode: function() {\n throw dbgOn(new Error('To be implemented from subclass'));\n },\n \n\tselectedNode: function() {\n\t\treturn this.getPane4Selection() || this.getPane3Selection() || this.getPane2Selection() || this.getPane1Selection();\n\t},\n\n\tallNodes: function() {\n\t\treturn this.allPaneNames.collect(function(ea) { return this.nodesInPane(ea) }, this).flatten();\n\t},\n\n\tsiblingsFor: function(node) {\n\t\tvar siblings = this.allPaneNames\n\t\t.collect(function(ea) { return this.nodesInPane(ea) }, this)\n\t\t.detect(function(ea) { return ea.include(node) });\n\t\tif (!siblings) return [];\n\t\treturn siblings.without(node);\n\t},\n\n\tnodesInPane: function(paneName) { // panes have listItems, no nodes\n\t\tvar listItems = this['get' + paneName + 'Content']();\n\t\tif (!listItems) return [];\n\t\tif (!listItems.collect) {\n\t\t\tconsole.log('Weird bug: listItems: ' + listItems + ' has no collect in pane ' + paneName);\n\t\t\treturn [];\n\t\t}\n\t\treturn listItems.collect(function(ea) { return ea.value }) \n\t},\n\t\n\tpaneNameOfNode: function(node) {\n \treturn this.allPaneNames.detect(function(pane) {\n\t\t\t// FIXME quality\n\t\t\treturn this.nodesInPane(pane).any(function(otherNode) { return otherNode.target == node.target })\n\t\t}, this);\n\t},\n\n\tselectionInPane: function(pane) {\n\t\treturn this['get'+pane+'Selection'](); \n\t},\n\n\tchildsFilteredAndAsListItems: function(node, filters) {\n \treturn \tthis.filterChildNodesOf(node, filters || []).collect(function(ea) { return ea.asListItem() });\n },\n\n filterChildNodesOf: function(node, filters) {\n \treturn filters.inject(node.childNodes(), function(nodes, filter) {\n \t\treturn filter.apply(nodes)\n \t});\n },\n\n \tinPaneSelectNodeNamed: function(paneName, nodeName) {\n\t\treturn this.inPaneSelectNodeMatching(paneName, function(node) {\n\t\t\treturn node && node.asString && node.asString().replace(/ ?\\(.*\\)/,\"\").endsWith(nodeName) });\n\t},\n\n\tinPaneSelectNodeMatching: function(paneName, test) {\n\t\tvar listItems = this['get' + paneName + 'Content']();\n\t\tif (!listItems) return null;\n\t\tvar nodes = listItems.pluck('value');\n\t\tvar wanted = nodes.detect(test);\n\t\tif (!wanted) return null;\n\t\tvar list = this.panel[paneName].innerMorph();\n\t\tlist.setSelection(wanted, true);\n\t\treturn wanted;\n\t},\n\n\tselectNode: function(node) {\n\t\treturn this.selectNodeMatching(function(otherNode) { return node == otherNode });\n\t\t// var paneName = this.paneNameOfNode(node);\n\t\t// if (!paneName) return;\n\t\t// this.inPaneSelectNodeNamed(paneName, node.asString());\n\t},\n\n\tselectNodeMatching: function(testFunc) {\n\t\tfor (var i = 0; i < this.allPaneNames.length; i++) {\n\t\t\tvar paneName = this.allPaneNames[i];\n\t\t\tvar node = this.inPaneSelectNodeMatching(paneName, testFunc);\n\t\t\tif (node) return node;\n\t\t}\n\t\treturn null;\n\t},\n\tselectNodeNamed: function(name) {\n\t\treturn this.selectNodeMatching(function(node) {\n\t\t\treturn node && node.asString && node.asString().include(name);\n\t\t});\n\t},\n\tselectNothing: function() {\n\t\tif (this.panel) this.setPane1Selection(null, true);\n\t},\n\n\n onPane1SelectionUpdate: function(node) {\n\n\t\tthis.pane1Selection = node; // for bindings\n\n\t\tthis.panel['Pane2'] && this.panel['Pane2'].innerMorph().clearFilter(); // FIXME, lis filter, not a browser filter!\n\t\t\n this.setPane2Selection(null, true);\n this.setPane2Content([this.emptyText]);\n if (!node) return\n\n\t\tthis.setPane2Content(this.childsFilteredAndAsListItems(node, this.getPane1Filters()));\n \tthis.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n this.setPane1Menu(node.menuSpec().concat(this.commandMenuSpec('Pane1')));\n\t\tthis.setPane2Menu(this.commandMenuSpec('Pane2'));\n\t\tthis.setPane3Menu(this.commandMenuSpec('Pane3'));\n\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n \n onPane2SelectionUpdate: function(node) {\n\t\n\t\tthis.pane2Selection = node; // for bindings\n\n\t\tthis.panel['Pane3'] && this.panel['Pane3'].innerMorph().clearFilter(); // FIXME, lis filter, not a browser filter!\n\t\n this.setPane3Selection(null);\n this.setPane3Content([this.emptyText]); \n if (!node) return\n\n this.setPane3Content(this.childsFilteredAndAsListItems(node, this.getPane2Filters()));\n this.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n\t\tthis.setPane2Menu(node.menuSpec().concat(this.commandMenuSpec('Pane2')));\n\t\tthis.setPane3Menu(this.commandMenuSpec('Pane3'));\n\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n \n\tonPane3SelectionUpdate: function(node) {\n\t\tthis.pane3Selection = node; // for bindings\n\n\t\tthis.panel['Pane4'] && this.panel['Pane4'].innerMorph().clearFilter(); // FIXME, lis filter, not a browser filter!\n\t\n this.setPane4Selection(null);\n this.setPane4Content([this.emptyText]); \n if (!node) return;\n\n this.setPane4Content(this.childsFilteredAndAsListItems(node, this.getPane3Filters()));\n this.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n\t\tthis.setPane3Menu(node.menuSpec().concat(this.commandMenuSpec('Pane3')));\n\t\tthis.setPane4Menu(this.commandMenuSpec('Pane4'));\n\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n\n\tonPane4SelectionUpdate: function(node) {\n\t\tthis.pane4Selection = node; // for bindings\n\n\t\tif (!node) return;\n\n\t\tthis.setSourceString(node.sourceString());\n\t\tthis.updateTitle();\n\n\t\tthis.setPane4Menu(node.menuSpec().concat(this.commandMenuSpec('Pane4')));\n\t\tthis.buttonCommands.forEach(function(cmd) { cmd.button.setIsActive(cmd.isActive()) })\n\n\t\tnode.onSelect();\n },\n\n\tonSourceStringUpdate: function(methodString, source) {\n\t\tthis.sourceString = methodString;\n\t\tif (!methodString || methodString == this.emptyText || !this.selectedNode()) return;\n\t\tif (this.selectedNode().sourceString() == methodString &&\n\t\t\tsource !== this.panel.sourcePane.innerMorph())\n\t\t\t\treturn;\n\t\tthis.selectedNode().newSource(methodString);\n\t\tthis.nodeChanged(this.selectedNode());\n\t},\n\n\tonPane1ContentUpdate: function() {\n\t},\n\n\tonPane2ContentUpdate: function() {\n\t},\n\n\tonPane3ContentUpdate: function(items, source) {\n\t\tif (source !== this.panel.Pane3.innerMorph())\n\t\t return;\n\t\t// handle drag and drop of items\n\t\tconsole.log('Got ' + items);\n\t},\n\n\tonPane4ContentUpdate: function(items, source) {\n\t},\n\n\tonPane1MenuUpdate: Functions.Null,\n\tonPane2MenuUpdate: Functions.Null,\n\tonPane3MenuUpdate: Functions.Null,\n\tonPane4MenuUpdate: Functions.Null,\n\tonPane1FiltersUpdate: Functions.Null,\n\tonPane2FiltersUpdate: Functions.Null,\n\tonPane3FiltersUpdate: Functions.Null,\n\tonPane4FiltersUpdate: Functions.Null,\n\tonStatusMessageUpdate: Functions.Null,\n\tonRootFiltersUpdate: Functions.Null,\n\n\tallChanged: function(keepUnsavedChanges, changedNode) {\n\t\t// optimization: if no node looks like the changed node in my browser do nothing\n\t\tif (changedNode && this.allNodes().every(function(ea) {return !changedNode.hasSimilarTarget(ea)}))\n\t\t\treturn;\n\n\t\t// FIXME remove duplication\n\t\tvar oldN1 = this.getPane1Selection();\n\t\tvar oldN2 = this.getPane2Selection();\n\t\tvar oldN3 = this.getPane3Selection();\n\t\tvar oldN4 = this.getPane4Selection();\n\n\t\tvar sourcePos = this.panel.sourcePane.getVerticalScrollPosition();\n\n\t\tvar src = keepUnsavedChanges &&\n\t\t\t\t\tthis.hasUnsavedChanges() &&\n\t\t\t\t\tthis.panel.sourcePane.innerMorph().textString;\n\n\t\tif (this.hasUnsavedChanges())\n\t\t\tthis.setSourceString(this.emptyText);\n\n\t\tvar revertStateOfPane = function(paneName, oldNode) {\n\t\t\tif (!oldNode) return;\n\t\t\tvar nodes = this.nodesInPane(paneName);\n\t\t\tvar newNode = nodes.detect(function(ea) {\n\t\t\t return ea && ea.target &&\n\t\t\t\t\t(ea.target == oldNode.target || (ea.target.eq && ea.target.eq(oldNode.target)))\n\t\t\t});\n\t\t\tif (!newNode)\n\t\t\t\tnewNode = nodes.detect(function(ea) {return ea && ea.asString() === oldNode.asString()});\n\t this['set' + paneName + 'Selection'](newNode, true);\n\t\t}.bind(this);\n\t\n\t\tthis.start(); // select rootNode and generate new subnodes\n\n\t\trevertStateOfPane('Pane1', oldN1);\n\t\trevertStateOfPane('Pane2', oldN2);\n\t\trevertStateOfPane('Pane3', oldN3);\n\t\trevertStateOfPane('Pane4', oldN4);\n\n\t\tif (!src) {\n\t\t\tthis.panel.sourcePane.setVerticalScrollPosition(sourcePos);\n\t\t\treturn;\n\t\t}\n\n\t\t//this.setSourceString(src);\n\t\tvar text = this.panel.sourcePane.innerMorph();\n\t\ttext.setTextString(src.toString())\n\t\tthis.panel.sourcePane.setVerticalScrollPosition(sourcePos);\n\t\t// text.changed()\n\t\ttext.showChangeClue(); // FIXME\n\t},\n\n nodeChanged: function(node) {\n // currently update everything, this isn't really necessary\n \t\tthis.allChanged();\n },\n \n\ttextChanged: function(node) {\n\t\t// be careful -- this can lead to overwritten source code\n\t\tvar pane = this.paneNameOfNode(node);\n\t\tif (!pane) return;\n\t\tthis.inPaneSelectNodeMatching(pane, Functions.False); // unselect\n\t\tthis.inPaneSelectNodeMatching(pane, function(other) { return other.target == node.target });\n\t\t// this.setSourceString(node.sourceString());\n\t},\n \n\tsignalNewSource: function(changedNode) {\n\t\tthis.mySourceControl().updateBrowsers(this, changedNode);\n\t},\n\n\tupdateTitle: function() {\n\t\tvar window = this.panel.owner;\n\t\tif (!window) return;\n\t\tvar n1 = this.getPane1Selection();\n\t var n2 = this.getPane2Selection();\n\t var n3 = this.getPane3Selection();\n\t\tvar n4 = this.getPane4Selection();\n\t\tvar title = '';\n\t\tif (n1) title += n1.asString();\n\t\tif (n2) title += ':' + n2.asString();\n\t\tif (n3) title += ':' + n3.asString();\n\t\tif (n4) title += ':' + n4.asString();\n\t\twindow.setTitle(title);\n\t},\n\n},\n'browser related', {\n\n installFilter: function(filter, paneName) {\n\t\tvar getter = 'get' + paneName + 'Filters';\n\t\tvar setter = 'set' + paneName + 'Filters';\n \tthis[setter](this[getter]().concat([filter]).uniq());\n },\n\n uninstallFilters: function(testFunc, paneName) {\n \t// testFunc returns true if the filter should be removed\n\t\tvar getter = 'get' + paneName + 'Filters';\n\t\tvar setter = 'set' + paneName + 'Filters';\n \tthis[setter](this[getter]().reject(testFunc));\n },\n\n\tcommandMenuSpec: function(pane) {\n\t\tvar result = this.commands()\n\t\t\t.collect(function(ea) { return new ea(this) }, this)\n\t\t\t.select(function(ea) { return ea.wantsMenu() && ea.isActive(pane) })\n\t\t\t.inject([], function(all, ea) { return all.concat(ea.trigger()) });\n\t\tif (result.length > 0)\n\t\t\tresult.unshift(['-------']);\n\t\treturn result;\n\t},\n\n\tsetStatusMessage: function(msg, color, delay) {\n\t\tvar s = this.panel.sourcePane;\t\n\t\tif (!this._statusMorph) {\n\t\t\tthis._statusMorph = new TextMorph(pt(300,30).extentAsRectangle());\n\t\t\tthis._statusMorph.applyStyle({borderWidth: 0, strokeOpacity: 0})\n\t\t}\n\t\tvar statusMorph = this._statusMorph;\n\t\tstatusMorph.setTextString(msg);\n\t\ts.addMorph(statusMorph);\n\t\tstatusMorph.setTextColor(color || Color.black);\n\t\tstatusMorph.centerAt(s.innerBounds().center());\n\t\t(function() { statusMorph.remove() }).delay(delay || 2);\n\t},\n\n\tconfirm: function(question, callback) {\n\t\tWorldMorph.current().confirm(question, callback.bind(this));\n\t},\n\n\tensureSourceNotAccidentlyDeleted: function(callback) {\n\t\t// checks if the source code has unsaved changes if it hasn't or if the\n\t\t// user wants to discard them then run the callback\n\t\t// otherwise do nothing\n\t\tif (!this.hasUnsavedChanges()) {\n\t\t\tcallback.apply(this);\n\t\t\treturn;\n\t\t}\n\t\tthis.confirm('There are unsaved changes. Discard them?',\n\t\t\tfunction(answer) { answer && callback.apply(this) });\n\t},\n\n},\n'source pane', {\n\tselectStringInSourcePane: function(string) {\n\t\tvar textMorph =\tthis.panel.sourcePane.innerMorph(),\n\t\t\tindex = textMorph.textString.indexOf(string);\n\t\ttextMorph.setSelectionRange(index, index + string.length)\n\t\ttextMorph.requestKeyboardFocus(WorldMorph.current().firstHand())\n\t},\n});\n\nPanelMorph.subclass('lively.ide.BrowserPanel', {\n\n\tdocumentation: 'Hack for deserializing my browser widget',\n\n\topenForDragAndDrop: false,\n\t\n\tonDeserialize: function($super) {\n\t\tvar widget = new this.ownerWidget.constructor();\n\t\tif (widget instanceof lively.ide.WikiCodeBrowser) return; // FIXME deserialize wiki browser\n\t\tvar selection = this.getSelectionSpec();\n\t\tif (this.targetURL) widget.targetURL = this.targetURL;\n\t\tthis.owner.targetMorph = this.owner.addMorph(widget.buildView(this.getExtent()));\n\t\tthis.owner.targetMorph.setPosition(this.getPosition());\n\t\tthis.remove();\n\t\tthis.resetSelection(selection, widget);\n },\n\n\tgetPane: function(pane) { return this[pane] && this[pane].innerMorph() },\n\t\n\tgetSelectionTextOfPane: function(pane) {\n\t\tvar pane = this.getPane(pane);\n\t\tif (!pane) return null;\n\t\tvar index = pane.selectedLineNo;\n\t\tif (index === undefined) return null;\n\t\tvar textItem = pane.submorphs[index];\n\t\treturn textItem && textItem.textString;\n\t},\n\n\tgetSelectionSpec: function() {\n\t\tvar basicPaneName = 'Pane', spec = {}, i = 1;\n\t\twhile (1) {\n\t\t\tvar paneName = basicPaneName + i;\n\t\t\tvar sel = this.getSelectionTextOfPane(paneName);\n\t\t\tif (!sel) return spec;\n\t\t\tspec[paneName] = sel;\n\t\t\ti++;\n\t\t}\t\t\t\n\t},\n\t\n\tresetSelection: function(selectionSpec, widget) {\n\t\tfor (var paneName in selectionSpec)\n\t\t\twidget.inPaneSelectNodeNamed(paneName, selectionSpec[paneName]);\n\t},\n\n\tshutdown: function($super) {\n\t\t$super();\n\t\tvar browser = this.ownerWidget;\n\t\tif (!browser.stop) {\n\t\t\tconsole.log('cannot unregister browser: ' + browser);\n\t\t\treturn;\n\t\t}\n\t\tconsole.log('unregister browser: ' + browser);\n\t\tbrowser.stop();\n\t},\n\n});\n\nObject.subclass('lively.ide.BrowserNode',\n'documentation', {\n\tdocumentation: 'Abstract node, defining the node interface',\n},\n'initializing', {\n\tinitialize: function(target, browser, parent) {\n\t\tthis.target = target;\n\t\tthis.browser = browser;\n\t\tthis.parent = parent;\n\t},\n},\n'accessing', {\n\tsiblingNodes: function() { return this.browser.siblingsFor(this) },\n\tparent: function() { return this.parent },\n\tchildNodes: function() { return [] },\n\tsourceString: function() { return this.browser.emptyText },\n},\n'conversion', {\n\tasString: function() { return 'no name for node of type ' + this.constructor.type },\n\tasListItem: function() {\n\t\t//FIXME make class listitem\n\t\tvar node = this;\n\t\treturn {\n\t\t\tisListItem: true,\n\t\t\tstring: this.asString(),\n\t\t\tvalue: this,\n\t\t\tonDrop: function(item) { node.onDrop( item && item.value) },\t//convert to node\n\t\t\tonDrag: function() { node.onDrag() },\n\t\t};\n\t},\n},\n'testing', {\n\thasSimilarTarget: function(other) {\n\t\tif (!other)\n\t\t\treturn false;\n\t\tvar myString = this.asString();\n\t\tvar otherString = other.asString();\n\t\treturn myString.length >= otherString.length ?\n\t\tmyString.include(otherString) :\n\t\totherString.include(myString);\n\t},\n},\n'source code management', {\n\tnewSource: function(newSource) {\n\t\tvar errorOccurred = false,\n\t\t\tfailureOccurred = false,\n\t\t\tmsg = 'Saving ' + this.target.getName() + '...\\n',\n\t\t\tsrcCtrl = this.target.getSourceControl ? this.target.getSourceControl() : lively.ide.SourceControl;\n\n\t\t// save source\n\t\ttry {\n\t\t\tif (this.saveSource(newSource, srcCtrl)) {\n\t\t\t\tmsg += 'Successfully saved';\n\t\t\t} else {\n\t\t\t\tmsg += 'Couldn\\'t save';\n\t\t\t\tfailureOccurred = true;\n\t\t\t} \n\t\t} catch(e) {\n\t\t\tdbgOn(true)\n\t\t\tmsg += 'Error while saving: ' + e;\n\t\t\terrorOccurred = true;\n\t\t}\n\n\t\tmsg += '\\n';\n\t\t\n\t\t// eval source\n\t\ttry {\n\t\t\tif (this.evalSource(newSource)) {\n\t\t\t\tmsg += 'Successfully evaluated ' + this.target.getName();\n\t\t\t} else {\n\t\t\t\tmsg += 'Eval disabled for ' + this.target.getName();\n\t\t\t\tfailureOccurred = true;\n\t\t\t}\n\t\t} catch(e) {\n\t\t\tmsg += 'Error evaluating ' + e;\n\t\t\t// TODO don't reference UI directly? \n\t\t\tthis.browser.panel.sourcePane.innerMorph().showError(e)\n\t\t\terrorOccurred = true;\n\t\t}\n\t\tvar color = errorOccurred ? Color.red : (failureOccurred ? Color.black : Color.green);\n\t\tvar delay = errorOccurred ? 5 : null;\n\t\tthis.statusMessage(msg, color, delay);\n\t\tthis.browser.signalNewSource(this);\n\t},\n evalSource: function(newSource) { return false }, \n saveSource: function(newSource, sourceControl) { return false },\n},\n'menu', {\n menuSpec: function() { return [] },\n},\n'logging and feedback', {\n statusMessage: function(string, optColor, optDelay) {\n\t\tconsole.log('Browser statusMessage: ' + string);\n this.browser && this.browser.setStatusMessage(string, optColor, optDelay);\n },\n},\n'updating', { \n signalChange: function() { this.browser.nodeChanged(this) },\n\tsignalTextChange: function() { this.browser.textChanged(this) },\n\tonSelect: function() { },\n},\n'dragging and dropping', {\n\tonDrag: function() { console.log(this.asString() + 'was dragged') },\n\tonDrop: function(nodeDroppedOntoOrNull) { console.log(this.asString() + 'was dropped') },\n\thandleDrop: function(nodeDroppedOntoMe) {\n\t\t// for double dispatch\n\t\treturn false;\n\t},\n},\n'file framgent support -- FIXME', {\n\tmergeFileFragment: function(fileFragment) {\n\t\t// for a node that represents multiple FileFragments\n\t\treturn false\n\t},\n});\n\nObject.subclass('lively.ide.BrowserCommand', {\n\n\tinitialize: function(browser) { this.browser = browser },\n\n\twantsButton: Functions.False,\n\n\twantsMenu: Functions.False,\n\n\tisActive: Functions.False,\n\n\tasString: function() { return 'unnamed command' },\n\n\ttrigger: function() {},\n\n\tworld: function() { return WorldMorph.current() },\n\n});\n\nObject.subclass('lively.ide.NodeFilter', {\n\tapply: function(nodes) { return nodes }\n});\n\nlively.ide.NodeFilter.subclass('lively.ide.SortFilter', {\n\tapply: function(nodes) {\n\t\treturn nodes.sort(function(a,b) {\n\t\t\tif (a.asString().toLowerCase() < b.asString().toLowerCase()) return -1;\n\t\t\tif (a.asString().toLowerCase() > b.asString().toLowerCase()) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n});\n\nlively.ide.NodeFilter.subclass('lively.ide.NodeTypeFilter', {\n\n\tdocumentation: 'allows only nodes of the specified class',\n\tisNodeTypeFilter: true,\n\n\tinitialize: function(attrsThatShouldBeTrue) {\n\t\tthis.attributes = attrsThatShouldBeTrue;\n\t},\t\n\n\tapply: function(nodes) {\n\t\tvar attrs = this.attributes;\n\t\tif (!attrs) {\n\t\t\tconsole.log('nodeTypeFilter has no attributes!!!');\n\t\t\treturn nodes;\n\t\t}\n\t\treturn nodes.select(function(node) {\n\t\t\treturn attrs.any(function(attr) { return node[attr] });\n\t\t});\n\t}\n});\n\nObject.extend(lively.ide.NodeTypeFilter, {\n\tdefaultInstance: function() {\n\t\treturn new lively.ide.NodeTypeFilter([\n\t\t\t'isClassNode',\n\t\t\t'isGrammarNode',\n\t\t\t'isChangeNode',\n\t\t\t'isFunctionNode',\n\t\t\t'isObjectNode']);\n\t},\n});\n\n}) // end of module","shape":{"__isSmartRef__":true,"id":877},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"_MaxTextWidth":900,"_MaxTextHeight":860,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"scroll","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":880},"_Position":{"__isSmartRef__":true,"id":889},"textColor":{"__isSmartRef__":true,"id":747},"owner":{"__isSmartRef__":true,"id":742},"attributeConnections":[{"__isSmartRef__":true,"id":890}],"doNotSerialize":["$$savedTextString"],"doNotCopyProperties":["$$savedTextString"],"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"877":{"position":{"__isSmartRef__":true,"id":878},"extent":{"__isSmartRef__":true,"id":879},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":747},"fill":{"__isSmartRef__":true,"id":748},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"878":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"879":{"x":900,"y":860,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"880":{"morph":{"__isSmartRef__":true,"id":876},"dispatchTable":{"__isSmartRef__":true,"id":881},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"881":{"mouseup":{"__isSmartRef__":true,"id":882},"mousedown":{"__isSmartRef__":true,"id":883},"selectstart":{"__isSmartRef__":true,"id":884},"mousewheel":{"__isSmartRef__":true,"id":885},"keydown":{"__isSmartRef__":true,"id":886},"keyup":{"__isSmartRef__":true,"id":887},"keypress":{"__isSmartRef__":true,"id":888}},"882":{"type":"mouseup","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"883":{"type":"mousedown","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"884":{"type":"selectstart","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"885":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"886":{"type":"keydown","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"887":{"type":"keyup","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"888":{"type":"keypress","target":{"__isSmartRef__":true,"id":876},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"889":{"x":0,"y":40,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"890":{"sourceObj":{"__isSmartRef__":true,"id":876},"sourceAttrName":"savedTextString","targetObj":{"__isSmartRef__":true,"id":760},"targetMethodName":"saveFile","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"891":{"position":{"__isSmartRef__":true,"id":892},"extent":{"__isSmartRef__":true,"id":893},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":747},"fill":{"__isSmartRef__":true,"id":894},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"892":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"893":{"x":900,"y":900,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"894":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"895":{"morph":{"__isSmartRef__":true,"id":742},"dispatchTable":{"__isSmartRef__":true,"id":896},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"896":{"mouseup":{"__isSmartRef__":true,"id":897},"mousedown":{"__isSmartRef__":true,"id":898},"mousewheel":{"__isSmartRef__":true,"id":899}},"897":{"type":"mouseup","target":{"__isSmartRef__":true,"id":742},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"898":{"type":"mousedown","target":{"__isSmartRef__":true,"id":742},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"899":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":742},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"900":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"901":{"submorphs":[{"__isSmartRef__":true,"id":902},{"__isSmartRef__":true,"id":913},{"__isSmartRef__":true,"id":928},{"__isSmartRef__":true,"id":954},{"__isSmartRef__":true,"id":980}],"scripts":[],"id":1440,"shape":{"__isSmartRef__":true,"id":1006},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1009},"_Position":{"__isSmartRef__":true,"id":1014},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":902},"windowMorph":{"__isSmartRef__":true,"id":741},"label":{"__isSmartRef__":true,"id":913},"closeButton":{"__isSmartRef__":true,"id":928},"menuButton":{"__isSmartRef__":true,"id":954},"collapseButton":{"__isSmartRef__":true,"id":980},"owner":{"__isSmartRef__":true,"id":741},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"902":{"submorphs":[],"scripts":[],"id":1441,"shape":{"__isSmartRef__":true,"id":903},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":907},"_Position":{"__isSmartRef__":true,"id":912},"owner":{"__isSmartRef__":true,"id":901},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"903":{"position":{"__isSmartRef__":true,"id":904},"extent":{"__isSmartRef__":true,"id":905},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":747},"fill":{"__isSmartRef__":true,"id":906},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"904":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"905":{"x":900,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"906":{"r":0,"g":0,"b":0.8,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"907":{"morph":{"__isSmartRef__":true,"id":902},"dispatchTable":{"__isSmartRef__":true,"id":908},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"908":{"mouseup":{"__isSmartRef__":true,"id":909},"mousedown":{"__isSmartRef__":true,"id":910},"mousewheel":{"__isSmartRef__":true,"id":911}},"909":{"type":"mouseup","target":{"__isSmartRef__":true,"id":902},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"910":{"type":"mousedown","target":{"__isSmartRef__":true,"id":902},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"911":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":902},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"912":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"913":{"submorphs":[],"scripts":[],"id":1442,"cachedTextString":"TextEditor","shape":{"__isSmartRef__":true,"id":914},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":917},"_Position":{"__isSmartRef__":true,"id":926},"textColor":{"__isSmartRef__":true,"id":747},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":927},"owner":{"__isSmartRef__":true,"id":901},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"914":{"position":{"__isSmartRef__":true,"id":915},"extent":{"__isSmartRef__":true,"id":916},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"915":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"916":{"x":80,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"917":{"morph":{"__isSmartRef__":true,"id":913},"dispatchTable":{"__isSmartRef__":true,"id":918},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"918":{"mouseup":{"__isSmartRef__":true,"id":919},"mousedown":{"__isSmartRef__":true,"id":920},"selectstart":{"__isSmartRef__":true,"id":921},"mousewheel":{"__isSmartRef__":true,"id":922},"keydown":{"__isSmartRef__":true,"id":923},"keyup":{"__isSmartRef__":true,"id":924},"keypress":{"__isSmartRef__":true,"id":925}},"919":{"type":"mouseup","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"920":{"type":"mousedown","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"921":{"type":"selectstart","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"922":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"923":{"type":"keydown","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"924":{"type":"keyup","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"925":{"type":"keypress","target":{"__isSmartRef__":true,"id":913},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"926":{"x":410,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"927":{"x":6,"y":2,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"928":{"submorphs":[{"__isSmartRef__":true,"id":929}],"scripts":[],"id":1443,"shape":{"__isSmartRef__":true,"id":943},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":946},"label":{"__isSmartRef__":true,"id":929},"owner":{"__isSmartRef__":true,"id":901},"attributeConnections":[{"__isSmartRef__":true,"id":951},{"__isSmartRef__":true,"id":952}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":953},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"929":{"submorphs":[],"scripts":[],"id":1444,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":930},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":933},"_Position":{"__isSmartRef__":true,"id":942},"textColor":{"__isSmartRef__":true,"id":747},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":928},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"930":{"position":{"__isSmartRef__":true,"id":931},"extent":{"__isSmartRef__":true,"id":932},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"931":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"932":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"933":{"morph":{"__isSmartRef__":true,"id":929},"dispatchTable":{"__isSmartRef__":true,"id":934},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"934":{"mouseup":{"__isSmartRef__":true,"id":935},"mousedown":{"__isSmartRef__":true,"id":936},"selectstart":{"__isSmartRef__":true,"id":937},"mousewheel":{"__isSmartRef__":true,"id":938},"keydown":{"__isSmartRef__":true,"id":939},"keyup":{"__isSmartRef__":true,"id":940},"keypress":{"__isSmartRef__":true,"id":941}},"935":{"type":"mouseup","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"936":{"type":"mousedown","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"937":{"type":"selectstart","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"938":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"939":{"type":"keydown","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"940":{"type":"keyup","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"941":{"type":"keypress","target":{"__isSmartRef__":true,"id":929},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"942":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"943":{"position":{"__isSmartRef__":true,"id":944},"extent":{"__isSmartRef__":true,"id":945},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"944":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"945":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"946":{"morph":{"__isSmartRef__":true,"id":928},"dispatchTable":{"__isSmartRef__":true,"id":947},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"947":{"mouseup":{"__isSmartRef__":true,"id":948},"mousedown":{"__isSmartRef__":true,"id":949},"mousewheel":{"__isSmartRef__":true,"id":950}},"948":{"type":"mouseup","target":{"__isSmartRef__":true,"id":928},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"949":{"type":"mousedown","target":{"__isSmartRef__":true,"id":928},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"950":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":928},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"951":{"sourceObj":{"__isSmartRef__":true,"id":928},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":741},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"952":{"sourceObj":{"__isSmartRef__":true,"id":928},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":741},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"953":{"x":881,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"954":{"submorphs":[{"__isSmartRef__":true,"id":955}],"scripts":[],"id":1445,"shape":{"__isSmartRef__":true,"id":969},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":972},"label":{"__isSmartRef__":true,"id":955},"owner":{"__isSmartRef__":true,"id":901},"attributeConnections":[{"__isSmartRef__":true,"id":977},{"__isSmartRef__":true,"id":978}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":979},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"955":{"submorphs":[],"scripts":[],"id":1446,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":956},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":959},"_Position":{"__isSmartRef__":true,"id":968},"textColor":{"__isSmartRef__":true,"id":747},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":954},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"956":{"position":{"__isSmartRef__":true,"id":957},"extent":{"__isSmartRef__":true,"id":958},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"957":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"958":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"959":{"morph":{"__isSmartRef__":true,"id":955},"dispatchTable":{"__isSmartRef__":true,"id":960},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"960":{"mouseup":{"__isSmartRef__":true,"id":961},"mousedown":{"__isSmartRef__":true,"id":962},"selectstart":{"__isSmartRef__":true,"id":963},"mousewheel":{"__isSmartRef__":true,"id":964},"keydown":{"__isSmartRef__":true,"id":965},"keyup":{"__isSmartRef__":true,"id":966},"keypress":{"__isSmartRef__":true,"id":967}},"961":{"type":"mouseup","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"962":{"type":"mousedown","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"963":{"type":"selectstart","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"964":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"965":{"type":"keydown","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"966":{"type":"keyup","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"967":{"type":"keypress","target":{"__isSmartRef__":true,"id":955},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"968":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"969":{"position":{"__isSmartRef__":true,"id":970},"extent":{"__isSmartRef__":true,"id":971},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"970":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"971":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"972":{"morph":{"__isSmartRef__":true,"id":954},"dispatchTable":{"__isSmartRef__":true,"id":973},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"973":{"mouseup":{"__isSmartRef__":true,"id":974},"mousedown":{"__isSmartRef__":true,"id":975},"mousewheel":{"__isSmartRef__":true,"id":976}},"974":{"type":"mouseup","target":{"__isSmartRef__":true,"id":954},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"975":{"type":"mousedown","target":{"__isSmartRef__":true,"id":954},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"976":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":954},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"977":{"sourceObj":{"__isSmartRef__":true,"id":954},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":741},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"978":{"sourceObj":{"__isSmartRef__":true,"id":954},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":741},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"979":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"980":{"submorphs":[{"__isSmartRef__":true,"id":981}],"scripts":[],"id":1447,"shape":{"__isSmartRef__":true,"id":995},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":998},"label":{"__isSmartRef__":true,"id":981},"owner":{"__isSmartRef__":true,"id":901},"attributeConnections":[{"__isSmartRef__":true,"id":1003},{"__isSmartRef__":true,"id":1004}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1005},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"981":{"submorphs":[],"scripts":[],"id":1448,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":982},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"_MaxTextWidth":null,"_MaxTextHeight":null,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":985},"_Position":{"__isSmartRef__":true,"id":994},"textColor":{"__isSmartRef__":true,"id":747},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":980},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"982":{"position":{"__isSmartRef__":true,"id":983},"extent":{"__isSmartRef__":true,"id":984},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":747},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"983":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"984":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"985":{"morph":{"__isSmartRef__":true,"id":981},"dispatchTable":{"__isSmartRef__":true,"id":986},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"986":{"mouseup":{"__isSmartRef__":true,"id":987},"mousedown":{"__isSmartRef__":true,"id":988},"selectstart":{"__isSmartRef__":true,"id":989},"mousewheel":{"__isSmartRef__":true,"id":990},"keydown":{"__isSmartRef__":true,"id":991},"keyup":{"__isSmartRef__":true,"id":992},"keypress":{"__isSmartRef__":true,"id":993}},"987":{"type":"mouseup","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"988":{"type":"mousedown","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"989":{"type":"selectstart","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"990":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"991":{"type":"keydown","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"992":{"type":"keyup","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"993":{"type":"keypress","target":{"__isSmartRef__":true,"id":981},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"994":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"995":{"position":{"__isSmartRef__":true,"id":996},"extent":{"__isSmartRef__":true,"id":997},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"996":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"997":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"998":{"morph":{"__isSmartRef__":true,"id":980},"dispatchTable":{"__isSmartRef__":true,"id":999},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"999":{"mouseup":{"__isSmartRef__":true,"id":1000},"mousedown":{"__isSmartRef__":true,"id":1001},"mousewheel":{"__isSmartRef__":true,"id":1002}},"1000":{"type":"mouseup","target":{"__isSmartRef__":true,"id":980},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1001":{"type":"mousedown","target":{"__isSmartRef__":true,"id":980},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1002":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":980},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1003":{"sourceObj":{"__isSmartRef__":true,"id":980},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":741},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1004":{"sourceObj":{"__isSmartRef__":true,"id":980},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":741},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1005":{"x":862,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1006":{"position":{"__isSmartRef__":true,"id":1007},"extent":{"__isSmartRef__":true,"id":1008},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1007":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1008":{"x":900,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1009":{"morph":{"__isSmartRef__":true,"id":901},"dispatchTable":{"__isSmartRef__":true,"id":1010},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1010":{"mouseup":{"__isSmartRef__":true,"id":1011},"mousedown":{"__isSmartRef__":true,"id":1012},"mousewheel":{"__isSmartRef__":true,"id":1013}},"1011":{"type":"mouseup","target":{"__isSmartRef__":true,"id":901},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1012":{"type":"mousedown","target":{"__isSmartRef__":true,"id":901},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1013":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":901},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1014":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1015":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":1016},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1016":{"x":900,"y":928.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1017":{"morph":{"__isSmartRef__":true,"id":741},"dispatchTable":{"__isSmartRef__":true,"id":1018},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1018":{"mouseup":{"__isSmartRef__":true,"id":1019},"mousedown":{"__isSmartRef__":true,"id":1020},"mousewheel":{"__isSmartRef__":true,"id":1021}},"1019":{"type":"mouseup","target":{"__isSmartRef__":true,"id":741},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1020":{"type":"mousedown","target":{"__isSmartRef__":true,"id":741},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1021":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":741},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1022":{"x":939,"y":958,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1023":{"submorphs":[{"__isSmartRef__":true,"id":1024},{"__isSmartRef__":true,"id":1040}],"scripts":[],"id":32,"shape":{"__isSmartRef__":true,"id":1154},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1156},"_Position":{"__isSmartRef__":true,"id":1161},"targetMorph":{"__isSmartRef__":true,"id":1024},"titleBar":{"__isSmartRef__":true,"id":1040},"contentOffset":{"__isSmartRef__":true,"id":1039},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"1024":{"submorphs":[],"scripts":[],"id":31,"cachedTextString":"lively.morphic.World.addMethods(\n'initializing', {\n\tinitialize: lively.morphic.World.prototype.initialize.wrap(function() {\n\t\tvar args = $A(arguments),\n\t\t\tproceed = args.shift();\n\t\tproceed.apply(this, args);\n\t\tthis.registerForGlobalKeyboardEvents();\n\t}),\n},\n'keyboard events', {\n\tregisterForGlobalKeyboardEvents: function() {\n//\t\tdocument.onkeydown = this.onKeyDown.bind(this)\n//\t\tdocument.onkeypress = this.onKeyPress.bind(this)\n\t\tthis.renderContext().morphNode.onkeydown = this.onKeyDown.bind(this)\n\t\tthis.renderContext().morphNode.onkeypress = this.onKeyPress.bind(this)\n\t},\n\tonKeyDown: function(evt) {\n\t\tevt.preventDefault();\n\t\treturn true;\n\t},\n\tonKeyPress: function(evt) {\n\t\tevt.preventDefault();\n\t\treturn true;\n\t},\n});\n\nthis.world().registerForGlobalKeyboardEvents()\n","shape":{"__isSmartRef__":true,"id":1025},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"auto","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1030},"_Position":{"__isSmartRef__":true,"id":1039},"_MaxTextWidth":814,"_MaxTextHeight":296,"textColor":{"__isSmartRef__":true,"id":1028},"owner":{"__isSmartRef__":true,"id":1023},"showsHalos":false,"halos":[],"name":"initializerText","savedTextString":"lively.morphic.World.addMethods(\n'initializing', {\n\tinitialize: lively.morphic.World.prototype.initialize.wrap(function() {\n\t\tvar args = $A(arguments),\n\t\t\tproceed = args.shift();\n\t\tproceed.apply(this, args);\n\t\tthis.registerForGlobalKeyboardEvents();\n\t}),\n},\n'keyboard events', {\n\tregisterForGlobalKeyboardEvents: function() {\n\t\tGlobal.addEventListener('keydown', this, 'onKeyDown')\n\t\tGlobal.addEventListener('keypress', this, 'onKeyPress')\n\t},\n\tonKeyDown: function(evt) {\n\t\talert('world key down ' + evt)\n\t},\n\tonKeyPress: function(evt) {\n\t\talert('world key down ' + evt)\n\t},\n});\n\nthis.world().registerForGlobalKeyboardEvents()\n","__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1025":{"position":{"__isSmartRef__":true,"id":1026},"extent":{"__isSmartRef__":true,"id":1027},"borderWidth":2,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":{"__isSmartRef__":true,"id":1029},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1026":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1027":{"x":814,"y":296,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1028":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1029":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1030":{"morph":{"__isSmartRef__":true,"id":1024},"dispatchTable":{"__isSmartRef__":true,"id":1031},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1031":{"mouseup":{"__isSmartRef__":true,"id":1032},"mousedown":{"__isSmartRef__":true,"id":1033},"selectstart":{"__isSmartRef__":true,"id":1034},"mousewheel":{"__isSmartRef__":true,"id":1035},"keydown":{"__isSmartRef__":true,"id":1036},"keyup":{"__isSmartRef__":true,"id":1037},"keypress":{"__isSmartRef__":true,"id":1038}},"1032":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1033":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1034":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1035":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1036":{"type":"keydown","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1037":{"type":"keyup","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1038":{"type":"keypress","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1039":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1040":{"submorphs":[{"__isSmartRef__":true,"id":1041},{"__isSmartRef__":true,"id":1052},{"__isSmartRef__":true,"id":1067},{"__isSmartRef__":true,"id":1093},{"__isSmartRef__":true,"id":1119}],"scripts":[],"id":33,"shape":{"__isSmartRef__":true,"id":1145},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1148},"_Position":{"__isSmartRef__":true,"id":1153},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":1041},"windowMorph":{"__isSmartRef__":true,"id":1023},"label":{"__isSmartRef__":true,"id":1052},"closeButton":{"__isSmartRef__":true,"id":1067},"menuButton":{"__isSmartRef__":true,"id":1093},"collapseButton":{"__isSmartRef__":true,"id":1119},"owner":{"__isSmartRef__":true,"id":1023},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"1041":{"submorphs":[],"scripts":[],"id":34,"shape":{"__isSmartRef__":true,"id":1042},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1046},"_Position":{"__isSmartRef__":true,"id":1051},"owner":{"__isSmartRef__":true,"id":1040},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"1042":{"position":{"__isSmartRef__":true,"id":1043},"extent":{"__isSmartRef__":true,"id":1044},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":{"__isSmartRef__":true,"id":1045},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1043":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1044":{"x":500,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1045":{"r":0,"g":0,"b":0.8,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1046":{"morph":{"__isSmartRef__":true,"id":1041},"dispatchTable":{"__isSmartRef__":true,"id":1047},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1047":{"mouseup":{"__isSmartRef__":true,"id":1048},"mousedown":{"__isSmartRef__":true,"id":1049},"mousewheel":{"__isSmartRef__":true,"id":1050}},"1048":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1041},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1049":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1041},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1050":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1041},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1051":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1052":{"submorphs":[],"scripts":[],"id":35,"cachedTextString":"Workspace","shape":{"__isSmartRef__":true,"id":1053},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1056},"_Position":{"__isSmartRef__":true,"id":1065},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":1066},"owner":{"__isSmartRef__":true,"id":1040},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1053":{"position":{"__isSmartRef__":true,"id":1054},"extent":{"__isSmartRef__":true,"id":1055},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1054":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1055":{"x":72,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1056":{"morph":{"__isSmartRef__":true,"id":1052},"dispatchTable":{"__isSmartRef__":true,"id":1057},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1057":{"mouseup":{"__isSmartRef__":true,"id":1058},"mousedown":{"__isSmartRef__":true,"id":1059},"selectstart":{"__isSmartRef__":true,"id":1060},"mousewheel":{"__isSmartRef__":true,"id":1061},"keydown":{"__isSmartRef__":true,"id":1062},"keyup":{"__isSmartRef__":true,"id":1063},"keypress":{"__isSmartRef__":true,"id":1064}},"1058":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1059":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1060":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1061":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1062":{"type":"keydown","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1063":{"type":"keyup","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1064":{"type":"keypress","target":{"__isSmartRef__":true,"id":1052},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1065":{"x":214,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1066":{"x":6,"y":2,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1067":{"submorphs":[{"__isSmartRef__":true,"id":1068}],"scripts":[],"id":36,"shape":{"__isSmartRef__":true,"id":1082},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1085},"label":{"__isSmartRef__":true,"id":1068},"owner":{"__isSmartRef__":true,"id":1040},"attributeConnections":[{"__isSmartRef__":true,"id":1090},{"__isSmartRef__":true,"id":1091}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1092},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1068":{"submorphs":[],"scripts":[],"id":37,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":1069},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1072},"_Position":{"__isSmartRef__":true,"id":1081},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1067},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1069":{"position":{"__isSmartRef__":true,"id":1070},"extent":{"__isSmartRef__":true,"id":1071},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1070":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1071":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1072":{"morph":{"__isSmartRef__":true,"id":1068},"dispatchTable":{"__isSmartRef__":true,"id":1073},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1073":{"mouseup":{"__isSmartRef__":true,"id":1074},"mousedown":{"__isSmartRef__":true,"id":1075},"selectstart":{"__isSmartRef__":true,"id":1076},"mousewheel":{"__isSmartRef__":true,"id":1077},"keydown":{"__isSmartRef__":true,"id":1078},"keyup":{"__isSmartRef__":true,"id":1079},"keypress":{"__isSmartRef__":true,"id":1080}},"1074":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1075":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1076":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1077":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1078":{"type":"keydown","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1079":{"type":"keyup","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1080":{"type":"keypress","target":{"__isSmartRef__":true,"id":1068},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1081":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1082":{"position":{"__isSmartRef__":true,"id":1083},"extent":{"__isSmartRef__":true,"id":1084},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1083":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1084":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1085":{"morph":{"__isSmartRef__":true,"id":1067},"dispatchTable":{"__isSmartRef__":true,"id":1086},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1086":{"mouseup":{"__isSmartRef__":true,"id":1087},"mousedown":{"__isSmartRef__":true,"id":1088},"mousewheel":{"__isSmartRef__":true,"id":1089}},"1087":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1067},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1088":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1067},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1089":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1067},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1090":{"sourceObj":{"__isSmartRef__":true,"id":1067},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1023},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1091":{"sourceObj":{"__isSmartRef__":true,"id":1067},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1023},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1092":{"x":481,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1093":{"submorphs":[{"__isSmartRef__":true,"id":1094}],"scripts":[],"id":38,"shape":{"__isSmartRef__":true,"id":1108},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1111},"label":{"__isSmartRef__":true,"id":1094},"owner":{"__isSmartRef__":true,"id":1040},"attributeConnections":[{"__isSmartRef__":true,"id":1116},{"__isSmartRef__":true,"id":1117}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1118},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1094":{"submorphs":[],"scripts":[],"id":39,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":1095},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1098},"_Position":{"__isSmartRef__":true,"id":1107},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1093},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1095":{"position":{"__isSmartRef__":true,"id":1096},"extent":{"__isSmartRef__":true,"id":1097},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1096":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1097":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1098":{"morph":{"__isSmartRef__":true,"id":1094},"dispatchTable":{"__isSmartRef__":true,"id":1099},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1099":{"mouseup":{"__isSmartRef__":true,"id":1100},"mousedown":{"__isSmartRef__":true,"id":1101},"selectstart":{"__isSmartRef__":true,"id":1102},"mousewheel":{"__isSmartRef__":true,"id":1103},"keydown":{"__isSmartRef__":true,"id":1104},"keyup":{"__isSmartRef__":true,"id":1105},"keypress":{"__isSmartRef__":true,"id":1106}},"1100":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1101":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1102":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1103":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1104":{"type":"keydown","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1105":{"type":"keyup","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1106":{"type":"keypress","target":{"__isSmartRef__":true,"id":1094},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1107":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1108":{"position":{"__isSmartRef__":true,"id":1109},"extent":{"__isSmartRef__":true,"id":1110},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1109":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1110":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1111":{"morph":{"__isSmartRef__":true,"id":1093},"dispatchTable":{"__isSmartRef__":true,"id":1112},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1112":{"mouseup":{"__isSmartRef__":true,"id":1113},"mousedown":{"__isSmartRef__":true,"id":1114},"mousewheel":{"__isSmartRef__":true,"id":1115}},"1113":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1093},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1114":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1093},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1115":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1093},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1116":{"sourceObj":{"__isSmartRef__":true,"id":1093},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1023},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1117":{"sourceObj":{"__isSmartRef__":true,"id":1093},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1023},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1118":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1119":{"submorphs":[{"__isSmartRef__":true,"id":1120}],"scripts":[],"id":40,"shape":{"__isSmartRef__":true,"id":1134},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1137},"label":{"__isSmartRef__":true,"id":1120},"owner":{"__isSmartRef__":true,"id":1040},"attributeConnections":[{"__isSmartRef__":true,"id":1142},{"__isSmartRef__":true,"id":1143}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1144},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1120":{"submorphs":[],"scripts":[],"id":41,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":1121},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1124},"_Position":{"__isSmartRef__":true,"id":1133},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1119},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1121":{"position":{"__isSmartRef__":true,"id":1122},"extent":{"__isSmartRef__":true,"id":1123},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1122":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1123":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1124":{"morph":{"__isSmartRef__":true,"id":1120},"dispatchTable":{"__isSmartRef__":true,"id":1125},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1125":{"mouseup":{"__isSmartRef__":true,"id":1126},"mousedown":{"__isSmartRef__":true,"id":1127},"selectstart":{"__isSmartRef__":true,"id":1128},"mousewheel":{"__isSmartRef__":true,"id":1129},"keydown":{"__isSmartRef__":true,"id":1130},"keyup":{"__isSmartRef__":true,"id":1131},"keypress":{"__isSmartRef__":true,"id":1132}},"1126":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1127":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1128":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1129":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1130":{"type":"keydown","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1131":{"type":"keyup","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1132":{"type":"keypress","target":{"__isSmartRef__":true,"id":1120},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1133":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1134":{"position":{"__isSmartRef__":true,"id":1135},"extent":{"__isSmartRef__":true,"id":1136},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1135":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1136":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1137":{"morph":{"__isSmartRef__":true,"id":1119},"dispatchTable":{"__isSmartRef__":true,"id":1138},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1138":{"mouseup":{"__isSmartRef__":true,"id":1139},"mousedown":{"__isSmartRef__":true,"id":1140},"mousewheel":{"__isSmartRef__":true,"id":1141}},"1139":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1119},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1140":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1119},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1141":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1119},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1142":{"sourceObj":{"__isSmartRef__":true,"id":1119},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1023},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1143":{"sourceObj":{"__isSmartRef__":true,"id":1119},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1023},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1144":{"x":462,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1145":{"position":{"__isSmartRef__":true,"id":1146},"extent":{"__isSmartRef__":true,"id":1147},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1146":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1147":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1148":{"morph":{"__isSmartRef__":true,"id":1040},"dispatchTable":{"__isSmartRef__":true,"id":1149},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1149":{"mouseup":{"__isSmartRef__":true,"id":1150},"mousedown":{"__isSmartRef__":true,"id":1151},"mousewheel":{"__isSmartRef__":true,"id":1152}},"1150":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1040},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1151":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1040},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1152":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1040},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1153":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1154":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":1155},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1155":{"x":522,"y":240.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1156":{"morph":{"__isSmartRef__":true,"id":1023},"dispatchTable":{"__isSmartRef__":true,"id":1157},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1157":{"mouseup":{"__isSmartRef__":true,"id":1158},"mousedown":{"__isSmartRef__":true,"id":1159},"mousewheel":{"__isSmartRef__":true,"id":1160}},"1158":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1023},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1159":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1023},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1160":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1023},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1161":{"x":1057,"y":193,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1162":{"submorphs":[{"__isSmartRef__":true,"id":1163},{"__isSmartRef__":true,"id":1177}],"scripts":[],"id":576,"shape":{"__isSmartRef__":true,"id":1289},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1291},"_Position":{"__isSmartRef__":true,"id":1296},"targetMorph":{"__isSmartRef__":true,"id":1163},"titleBar":{"__isSmartRef__":true,"id":1177},"contentOffset":{"__isSmartRef__":true,"id":1176},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"1163":{"submorphs":[],"scripts":[],"id":575,"cachedTextString":"initializerText = $morph('initializerText')\ninitializer = this.world().getChangeSet().subElements()[1]\ninitializer.setDefinition(initializerText.textString)","shape":{"__isSmartRef__":true,"id":1164},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"auto","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1167},"_Position":{"__isSmartRef__":true,"id":1176},"_MaxTextWidth":498,"_MaxTextHeight":70,"textColor":{"__isSmartRef__":true,"id":1028},"owner":{"__isSmartRef__":true,"id":1162},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1164":{"position":{"__isSmartRef__":true,"id":1165},"extent":{"__isSmartRef__":true,"id":1166},"borderWidth":2,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":{"__isSmartRef__":true,"id":1029},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1165":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1166":{"x":498,"y":70,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1167":{"morph":{"__isSmartRef__":true,"id":1163},"dispatchTable":{"__isSmartRef__":true,"id":1168},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1168":{"mouseup":{"__isSmartRef__":true,"id":1169},"mousedown":{"__isSmartRef__":true,"id":1170},"selectstart":{"__isSmartRef__":true,"id":1171},"mousewheel":{"__isSmartRef__":true,"id":1172},"keydown":{"__isSmartRef__":true,"id":1173},"keyup":{"__isSmartRef__":true,"id":1174},"keypress":{"__isSmartRef__":true,"id":1175}},"1169":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1170":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1171":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1172":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1173":{"type":"keydown","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1174":{"type":"keyup","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1175":{"type":"keypress","target":{"__isSmartRef__":true,"id":1163},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1176":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1177":{"submorphs":[{"__isSmartRef__":true,"id":1178},{"__isSmartRef__":true,"id":1188},{"__isSmartRef__":true,"id":1202},{"__isSmartRef__":true,"id":1228},{"__isSmartRef__":true,"id":1254}],"scripts":[],"id":577,"shape":{"__isSmartRef__":true,"id":1280},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1283},"_Position":{"__isSmartRef__":true,"id":1288},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":1178},"windowMorph":{"__isSmartRef__":true,"id":1162},"label":{"__isSmartRef__":true,"id":1188},"closeButton":{"__isSmartRef__":true,"id":1202},"menuButton":{"__isSmartRef__":true,"id":1228},"collapseButton":{"__isSmartRef__":true,"id":1254},"owner":{"__isSmartRef__":true,"id":1162},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"1178":{"submorphs":[],"scripts":[],"id":578,"shape":{"__isSmartRef__":true,"id":1179},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1182},"_Position":{"__isSmartRef__":true,"id":1187},"owner":{"__isSmartRef__":true,"id":1177},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"1179":{"position":{"__isSmartRef__":true,"id":1180},"extent":{"__isSmartRef__":true,"id":1181},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":{"__isSmartRef__":true,"id":1045},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1180":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1181":{"x":500,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1182":{"morph":{"__isSmartRef__":true,"id":1178},"dispatchTable":{"__isSmartRef__":true,"id":1183},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1183":{"mouseup":{"__isSmartRef__":true,"id":1184},"mousedown":{"__isSmartRef__":true,"id":1185},"mousewheel":{"__isSmartRef__":true,"id":1186}},"1184":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1178},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1185":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1178},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1186":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1178},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1187":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1188":{"submorphs":[],"scripts":[],"id":579,"cachedTextString":"Workspace","shape":{"__isSmartRef__":true,"id":1189},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1192},"_Position":{"__isSmartRef__":true,"id":1201},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":1066},"owner":{"__isSmartRef__":true,"id":1177},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1189":{"position":{"__isSmartRef__":true,"id":1190},"extent":{"__isSmartRef__":true,"id":1191},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1190":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1191":{"x":72,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1192":{"morph":{"__isSmartRef__":true,"id":1188},"dispatchTable":{"__isSmartRef__":true,"id":1193},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1193":{"mouseup":{"__isSmartRef__":true,"id":1194},"mousedown":{"__isSmartRef__":true,"id":1195},"selectstart":{"__isSmartRef__":true,"id":1196},"mousewheel":{"__isSmartRef__":true,"id":1197},"keydown":{"__isSmartRef__":true,"id":1198},"keyup":{"__isSmartRef__":true,"id":1199},"keypress":{"__isSmartRef__":true,"id":1200}},"1194":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1195":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1196":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1197":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1198":{"type":"keydown","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1199":{"type":"keyup","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1200":{"type":"keypress","target":{"__isSmartRef__":true,"id":1188},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1201":{"x":214,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1202":{"submorphs":[{"__isSmartRef__":true,"id":1203}],"scripts":[],"id":580,"shape":{"__isSmartRef__":true,"id":1217},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1220},"label":{"__isSmartRef__":true,"id":1203},"owner":{"__isSmartRef__":true,"id":1177},"attributeConnections":[{"__isSmartRef__":true,"id":1225},{"__isSmartRef__":true,"id":1226}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1227},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1203":{"submorphs":[],"scripts":[],"id":581,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":1204},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1207},"_Position":{"__isSmartRef__":true,"id":1216},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1202},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1204":{"position":{"__isSmartRef__":true,"id":1205},"extent":{"__isSmartRef__":true,"id":1206},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1205":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1206":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1207":{"morph":{"__isSmartRef__":true,"id":1203},"dispatchTable":{"__isSmartRef__":true,"id":1208},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1208":{"mouseup":{"__isSmartRef__":true,"id":1209},"mousedown":{"__isSmartRef__":true,"id":1210},"selectstart":{"__isSmartRef__":true,"id":1211},"mousewheel":{"__isSmartRef__":true,"id":1212},"keydown":{"__isSmartRef__":true,"id":1213},"keyup":{"__isSmartRef__":true,"id":1214},"keypress":{"__isSmartRef__":true,"id":1215}},"1209":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1210":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1211":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1212":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1213":{"type":"keydown","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1214":{"type":"keyup","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1215":{"type":"keypress","target":{"__isSmartRef__":true,"id":1203},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1216":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1217":{"position":{"__isSmartRef__":true,"id":1218},"extent":{"__isSmartRef__":true,"id":1219},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1218":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1219":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1220":{"morph":{"__isSmartRef__":true,"id":1202},"dispatchTable":{"__isSmartRef__":true,"id":1221},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1221":{"mouseup":{"__isSmartRef__":true,"id":1222},"mousedown":{"__isSmartRef__":true,"id":1223},"mousewheel":{"__isSmartRef__":true,"id":1224}},"1222":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1202},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1223":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1202},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1224":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1202},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1225":{"sourceObj":{"__isSmartRef__":true,"id":1202},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1162},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1226":{"sourceObj":{"__isSmartRef__":true,"id":1202},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1162},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1227":{"x":481,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1228":{"submorphs":[{"__isSmartRef__":true,"id":1229}],"scripts":[],"id":582,"shape":{"__isSmartRef__":true,"id":1243},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1246},"label":{"__isSmartRef__":true,"id":1229},"owner":{"__isSmartRef__":true,"id":1177},"attributeConnections":[{"__isSmartRef__":true,"id":1251},{"__isSmartRef__":true,"id":1252}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1253},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1229":{"submorphs":[],"scripts":[],"id":583,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":1230},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1233},"_Position":{"__isSmartRef__":true,"id":1242},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1228},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1230":{"position":{"__isSmartRef__":true,"id":1231},"extent":{"__isSmartRef__":true,"id":1232},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1231":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1232":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1233":{"morph":{"__isSmartRef__":true,"id":1229},"dispatchTable":{"__isSmartRef__":true,"id":1234},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1234":{"mouseup":{"__isSmartRef__":true,"id":1235},"mousedown":{"__isSmartRef__":true,"id":1236},"selectstart":{"__isSmartRef__":true,"id":1237},"mousewheel":{"__isSmartRef__":true,"id":1238},"keydown":{"__isSmartRef__":true,"id":1239},"keyup":{"__isSmartRef__":true,"id":1240},"keypress":{"__isSmartRef__":true,"id":1241}},"1235":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1236":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1237":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1238":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1239":{"type":"keydown","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1240":{"type":"keyup","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1241":{"type":"keypress","target":{"__isSmartRef__":true,"id":1229},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1242":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1243":{"position":{"__isSmartRef__":true,"id":1244},"extent":{"__isSmartRef__":true,"id":1245},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1244":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1245":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1246":{"morph":{"__isSmartRef__":true,"id":1228},"dispatchTable":{"__isSmartRef__":true,"id":1247},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1247":{"mouseup":{"__isSmartRef__":true,"id":1248},"mousedown":{"__isSmartRef__":true,"id":1249},"mousewheel":{"__isSmartRef__":true,"id":1250}},"1248":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1228},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1249":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1228},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1250":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1228},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1251":{"sourceObj":{"__isSmartRef__":true,"id":1228},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1162},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1252":{"sourceObj":{"__isSmartRef__":true,"id":1228},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1162},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1253":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1254":{"submorphs":[{"__isSmartRef__":true,"id":1255}],"scripts":[],"id":584,"shape":{"__isSmartRef__":true,"id":1269},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1272},"label":{"__isSmartRef__":true,"id":1255},"owner":{"__isSmartRef__":true,"id":1177},"attributeConnections":[{"__isSmartRef__":true,"id":1277},{"__isSmartRef__":true,"id":1278}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1279},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1255":{"submorphs":[],"scripts":[],"id":585,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":1256},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1259},"_Position":{"__isSmartRef__":true,"id":1268},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1028},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1254},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1256":{"position":{"__isSmartRef__":true,"id":1257},"extent":{"__isSmartRef__":true,"id":1258},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1028},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1257":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1258":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1259":{"morph":{"__isSmartRef__":true,"id":1255},"dispatchTable":{"__isSmartRef__":true,"id":1260},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1260":{"mouseup":{"__isSmartRef__":true,"id":1261},"mousedown":{"__isSmartRef__":true,"id":1262},"selectstart":{"__isSmartRef__":true,"id":1263},"mousewheel":{"__isSmartRef__":true,"id":1264},"keydown":{"__isSmartRef__":true,"id":1265},"keyup":{"__isSmartRef__":true,"id":1266},"keypress":{"__isSmartRef__":true,"id":1267}},"1261":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1262":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1263":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1264":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1265":{"type":"keydown","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1266":{"type":"keyup","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1267":{"type":"keypress","target":{"__isSmartRef__":true,"id":1255},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1268":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1269":{"position":{"__isSmartRef__":true,"id":1270},"extent":{"__isSmartRef__":true,"id":1271},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1270":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1271":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1272":{"morph":{"__isSmartRef__":true,"id":1254},"dispatchTable":{"__isSmartRef__":true,"id":1273},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1273":{"mouseup":{"__isSmartRef__":true,"id":1274},"mousedown":{"__isSmartRef__":true,"id":1275},"mousewheel":{"__isSmartRef__":true,"id":1276}},"1274":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1254},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1275":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1254},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1276":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1254},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1277":{"sourceObj":{"__isSmartRef__":true,"id":1254},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1162},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1278":{"sourceObj":{"__isSmartRef__":true,"id":1254},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1162},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1279":{"x":462,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1280":{"position":{"__isSmartRef__":true,"id":1281},"extent":{"__isSmartRef__":true,"id":1282},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1281":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1282":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1283":{"morph":{"__isSmartRef__":true,"id":1177},"dispatchTable":{"__isSmartRef__":true,"id":1284},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1284":{"mouseup":{"__isSmartRef__":true,"id":1285},"mousedown":{"__isSmartRef__":true,"id":1286},"mousewheel":{"__isSmartRef__":true,"id":1287}},"1285":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1177},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1286":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1177},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1287":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1177},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1288":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1289":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":1290},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1290":{"x":500,"y":228.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1291":{"morph":{"__isSmartRef__":true,"id":1162},"dispatchTable":{"__isSmartRef__":true,"id":1292},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1292":{"mouseup":{"__isSmartRef__":true,"id":1293},"mousedown":{"__isSmartRef__":true,"id":1294},"mousewheel":{"__isSmartRef__":true,"id":1295}},"1293":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1162},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1294":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1162},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1295":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1162},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1296":{"x":1388,"y":46,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1297":{"submorphs":[{"__isSmartRef__":true,"id":1298},{"__isSmartRef__":true,"id":1314}],"scripts":[],"id":41,"shape":{"__isSmartRef__":true,"id":1428},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1430},"_Position":{"__isSmartRef__":true,"id":1435},"targetMorph":{"__isSmartRef__":true,"id":1298},"titleBar":{"__isSmartRef__":true,"id":1314},"contentOffset":{"__isSmartRef__":true,"id":1313},"collapsedTransform":null,"collapsedExtent":null,"expandedTransform":null,"expandedExtent":null,"ignoreEventsOnExpand":false,"owner":{"__isSmartRef__":true,"id":0},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Window"},"1298":{"submorphs":[],"scripts":[],"id":40,"cachedTextString":"m1 = lively.morphic.Morph.makeRectangle(0,0, 100, 100);\nm2 = lively.morphic.Morph.makeRectangle(0,0, 50, 50);\nm1.addMorph(m2);\nthis.world().addMorph(m1)\nm1.align(m1.bounds().bottomLeft(), this.owner.bounds().topLeft())\nm1.setExtent(pt(50, 50))\nm1.setExtent(pt(100, 100))","shape":{"__isSmartRef__":true,"id":1299},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":true,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"auto","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1304},"_Position":{"__isSmartRef__":true,"id":1313},"_MaxTextWidth":500,"_MaxTextHeight":200,"textColor":{"__isSmartRef__":true,"id":1302},"owner":{"__isSmartRef__":true,"id":1297},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1299":{"position":{"__isSmartRef__":true,"id":1300},"extent":{"__isSmartRef__":true,"id":1301},"borderWidth":2,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":{"__isSmartRef__":true,"id":1303},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1300":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1301":{"x":500,"y":200,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1302":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1303":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1304":{"morph":{"__isSmartRef__":true,"id":1298},"dispatchTable":{"__isSmartRef__":true,"id":1305},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1305":{"mouseup":{"__isSmartRef__":true,"id":1306},"mousedown":{"__isSmartRef__":true,"id":1307},"selectstart":{"__isSmartRef__":true,"id":1308},"mousewheel":{"__isSmartRef__":true,"id":1309},"keydown":{"__isSmartRef__":true,"id":1310},"keyup":{"__isSmartRef__":true,"id":1311},"keypress":{"__isSmartRef__":true,"id":1312}},"1306":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1307":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1308":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1309":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1310":{"type":"keydown","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1311":{"type":"keyup","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1312":{"type":"keypress","target":{"__isSmartRef__":true,"id":1298},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1313":{"x":0,"y":28.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1314":{"submorphs":[{"__isSmartRef__":true,"id":1315},{"__isSmartRef__":true,"id":1326},{"__isSmartRef__":true,"id":1341},{"__isSmartRef__":true,"id":1367},{"__isSmartRef__":true,"id":1393}],"scripts":[],"id":42,"shape":{"__isSmartRef__":true,"id":1419},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1422},"_Position":{"__isSmartRef__":true,"id":1427},"eventsAreIgnored":true,"contentMorph":{"__isSmartRef__":true,"id":1315},"windowMorph":{"__isSmartRef__":true,"id":1297},"label":{"__isSmartRef__":true,"id":1326},"closeButton":{"__isSmartRef__":true,"id":1341},"menuButton":{"__isSmartRef__":true,"id":1367},"collapseButton":{"__isSmartRef__":true,"id":1393},"owner":{"__isSmartRef__":true,"id":1297},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.TitleBar"},"1315":{"submorphs":[],"scripts":[],"id":43,"shape":{"__isSmartRef__":true,"id":1316},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1320},"_Position":{"__isSmartRef__":true,"id":1325},"owner":{"__isSmartRef__":true,"id":1314},"eventsAreIgnored":true,"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"1316":{"position":{"__isSmartRef__":true,"id":1317},"extent":{"__isSmartRef__":true,"id":1318},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":{"__isSmartRef__":true,"id":1319},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1317":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1318":{"x":500,"y":25,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1319":{"r":0,"g":0,"b":0.8,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1320":{"morph":{"__isSmartRef__":true,"id":1315},"dispatchTable":{"__isSmartRef__":true,"id":1321},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1321":{"mouseup":{"__isSmartRef__":true,"id":1322},"mousedown":{"__isSmartRef__":true,"id":1323},"mousewheel":{"__isSmartRef__":true,"id":1324}},"1322":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1315},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1323":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1315},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1324":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1315},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1325":{"x":0.5,"y":0.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1326":{"submorphs":[],"scripts":[],"id":44,"cachedTextString":"Workspace","shape":{"__isSmartRef__":true,"id":1327},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1330},"_Position":{"__isSmartRef__":true,"id":1339},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1302},"isLabel":true,"eventsAreIgnored":true,"padding":{"__isSmartRef__":true,"id":1340},"owner":{"__isSmartRef__":true,"id":1314},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1327":{"position":{"__isSmartRef__":true,"id":1328},"extent":{"__isSmartRef__":true,"id":1329},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":null,"borderRadius":8,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1328":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1329":{"x":72,"y":22,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1330":{"morph":{"__isSmartRef__":true,"id":1326},"dispatchTable":{"__isSmartRef__":true,"id":1331},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1331":{"mouseup":{"__isSmartRef__":true,"id":1332},"mousedown":{"__isSmartRef__":true,"id":1333},"selectstart":{"__isSmartRef__":true,"id":1334},"mousewheel":{"__isSmartRef__":true,"id":1335},"keydown":{"__isSmartRef__":true,"id":1336},"keyup":{"__isSmartRef__":true,"id":1337},"keypress":{"__isSmartRef__":true,"id":1338}},"1332":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1333":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1334":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1335":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1336":{"type":"keydown","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1337":{"type":"keyup","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1338":{"type":"keypress","target":{"__isSmartRef__":true,"id":1326},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1339":{"x":214,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1340":{"x":6,"y":2,"width":0,"height":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Rectangle"},"1341":{"submorphs":[{"__isSmartRef__":true,"id":1342}],"scripts":[],"id":45,"shape":{"__isSmartRef__":true,"id":1356},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1359},"label":{"__isSmartRef__":true,"id":1342},"owner":{"__isSmartRef__":true,"id":1314},"attributeConnections":[{"__isSmartRef__":true,"id":1364},{"__isSmartRef__":true,"id":1365}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1366},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1342":{"submorphs":[],"scripts":[],"id":46,"cachedTextString":"X","shape":{"__isSmartRef__":true,"id":1343},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1346},"_Position":{"__isSmartRef__":true,"id":1355},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1302},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1341},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1343":{"position":{"__isSmartRef__":true,"id":1344},"extent":{"__isSmartRef__":true,"id":1345},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1344":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1345":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1346":{"morph":{"__isSmartRef__":true,"id":1342},"dispatchTable":{"__isSmartRef__":true,"id":1347},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1347":{"mouseup":{"__isSmartRef__":true,"id":1348},"mousedown":{"__isSmartRef__":true,"id":1349},"selectstart":{"__isSmartRef__":true,"id":1350},"mousewheel":{"__isSmartRef__":true,"id":1351},"keydown":{"__isSmartRef__":true,"id":1352},"keyup":{"__isSmartRef__":true,"id":1353},"keypress":{"__isSmartRef__":true,"id":1354}},"1348":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1349":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1350":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1351":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1352":{"type":"keydown","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1353":{"type":"keyup","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1354":{"type":"keypress","target":{"__isSmartRef__":true,"id":1342},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1355":{"x":-4,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1356":{"position":{"__isSmartRef__":true,"id":1357},"extent":{"__isSmartRef__":true,"id":1358},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1357":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1358":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1359":{"morph":{"__isSmartRef__":true,"id":1341},"dispatchTable":{"__isSmartRef__":true,"id":1360},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1360":{"mouseup":{"__isSmartRef__":true,"id":1361},"mousedown":{"__isSmartRef__":true,"id":1362},"mousewheel":{"__isSmartRef__":true,"id":1363}},"1361":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1341},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1362":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1341},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1363":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1341},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1364":{"sourceObj":{"__isSmartRef__":true,"id":1341},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1297},"targetMethodName":"getCloseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1365":{"sourceObj":{"__isSmartRef__":true,"id":1341},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1297},"targetMethodName":"initiateShutdown","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1366":{"x":481,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1367":{"submorphs":[{"__isSmartRef__":true,"id":1368}],"scripts":[],"id":47,"shape":{"__isSmartRef__":true,"id":1382},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1385},"label":{"__isSmartRef__":true,"id":1368},"owner":{"__isSmartRef__":true,"id":1314},"attributeConnections":[{"__isSmartRef__":true,"id":1390},{"__isSmartRef__":true,"id":1391}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1392},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1368":{"submorphs":[],"scripts":[],"id":48,"cachedTextString":"M","shape":{"__isSmartRef__":true,"id":1369},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1372},"_Position":{"__isSmartRef__":true,"id":1381},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1302},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1367},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1369":{"position":{"__isSmartRef__":true,"id":1370},"extent":{"__isSmartRef__":true,"id":1371},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1370":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1371":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1372":{"morph":{"__isSmartRef__":true,"id":1368},"dispatchTable":{"__isSmartRef__":true,"id":1373},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1373":{"mouseup":{"__isSmartRef__":true,"id":1374},"mousedown":{"__isSmartRef__":true,"id":1375},"selectstart":{"__isSmartRef__":true,"id":1376},"mousewheel":{"__isSmartRef__":true,"id":1377},"keydown":{"__isSmartRef__":true,"id":1378},"keyup":{"__isSmartRef__":true,"id":1379},"keypress":{"__isSmartRef__":true,"id":1380}},"1374":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1375":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1376":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1377":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1378":{"type":"keydown","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1379":{"type":"keyup","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1380":{"type":"keypress","target":{"__isSmartRef__":true,"id":1368},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1381":{"x":-5,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1382":{"position":{"__isSmartRef__":true,"id":1383},"extent":{"__isSmartRef__":true,"id":1384},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1383":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1384":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1385":{"morph":{"__isSmartRef__":true,"id":1367},"dispatchTable":{"__isSmartRef__":true,"id":1386},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1386":{"mouseup":{"__isSmartRef__":true,"id":1387},"mousedown":{"__isSmartRef__":true,"id":1388},"mousewheel":{"__isSmartRef__":true,"id":1389}},"1387":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1367},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1388":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1367},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1389":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1367},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1390":{"sourceObj":{"__isSmartRef__":true,"id":1367},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1297},"targetMethodName":"getMenuHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1391":{"sourceObj":{"__isSmartRef__":true,"id":1367},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1297},"targetMethodName":"showTargetMorphMenu","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1392":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1393":{"submorphs":[{"__isSmartRef__":true,"id":1394}],"scripts":[],"id":49,"shape":{"__isSmartRef__":true,"id":1408},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1411},"label":{"__isSmartRef__":true,"id":1394},"owner":{"__isSmartRef__":true,"id":1314},"attributeConnections":[{"__isSmartRef__":true,"id":1416},{"__isSmartRef__":true,"id":1417}],"doNotSerialize":["$$getHelpText","$$fire"],"doNotCopyProperties":["$$getHelpText","$$fire"],"_Position":{"__isSmartRef__":true,"id":1418},"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.WindowControl"},"1394":{"submorphs":[],"scripts":[],"id":50,"cachedTextString":"–","shape":{"__isSmartRef__":true,"id":1395},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":false,"allowsInput":false,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1398},"_Position":{"__isSmartRef__":true,"id":1407},"_MaxTextWidth":null,"_MaxTextHeight":null,"textColor":{"__isSmartRef__":true,"id":1302},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1393},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1395":{"position":{"__isSmartRef__":true,"id":1396},"extent":{"__isSmartRef__":true,"id":1397},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":null,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1396":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1397":{"x":20,"y":20,"__LivelyClassName__":"Point","__SourceModuleName__":"Global"},"1398":{"morph":{"__isSmartRef__":true,"id":1394},"dispatchTable":{"__isSmartRef__":true,"id":1399},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1399":{"mouseup":{"__isSmartRef__":true,"id":1400},"mousedown":{"__isSmartRef__":true,"id":1401},"selectstart":{"__isSmartRef__":true,"id":1402},"mousewheel":{"__isSmartRef__":true,"id":1403},"keydown":{"__isSmartRef__":true,"id":1404},"keyup":{"__isSmartRef__":true,"id":1405},"keypress":{"__isSmartRef__":true,"id":1406}},"1400":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1401":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1402":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1403":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1404":{"type":"keydown","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1405":{"type":"keyup","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1406":{"type":"keypress","target":{"__isSmartRef__":true,"id":1394},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1407":{"x":-3,"y":-6,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1408":{"position":{"__isSmartRef__":true,"id":1409},"extent":{"__isSmartRef__":true,"id":1410},"borderWidth":0,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Ellipse"},"1409":{"x":3,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1410":{"x":16,"y":16,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1411":{"morph":{"__isSmartRef__":true,"id":1393},"dispatchTable":{"__isSmartRef__":true,"id":1412},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1412":{"mouseup":{"__isSmartRef__":true,"id":1413},"mousedown":{"__isSmartRef__":true,"id":1414},"mousewheel":{"__isSmartRef__":true,"id":1415}},"1413":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1393},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1414":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1393},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1415":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1393},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1416":{"sourceObj":{"__isSmartRef__":true,"id":1393},"sourceAttrName":"getHelpText","targetObj":{"__isSmartRef__":true,"id":1297},"targetMethodName":"getCollapseHelp","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1417":{"sourceObj":{"__isSmartRef__":true,"id":1393},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":1297},"targetMethodName":"toggleCollapse","__SourceModuleName__":"Global.lively.bindings","__LivelyClassName__":"AttributeConnection"},"1418":{"x":462,"y":3,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1419":{"position":{"__isSmartRef__":true,"id":1420},"extent":{"__isSmartRef__":true,"id":1421},"borderWidth":0,"fill":null,"strokeOpacity":0,"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1420":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1421":{"x":500,"y":22,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1422":{"morph":{"__isSmartRef__":true,"id":1314},"dispatchTable":{"__isSmartRef__":true,"id":1423},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1423":{"mouseup":{"__isSmartRef__":true,"id":1424},"mousedown":{"__isSmartRef__":true,"id":1425},"mousewheel":{"__isSmartRef__":true,"id":1426}},"1424":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1314},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1425":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1314},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1426":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1314},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1427":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1428":{"borderWidth":0,"fill":null,"strokeOpacity":0,"borderRadius":0,"extent":{"__isSmartRef__":true,"id":1429},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1429":{"x":500,"y":228.5,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1430":{"morph":{"__isSmartRef__":true,"id":1297},"dispatchTable":{"__isSmartRef__":true,"id":1431},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1431":{"mouseup":{"__isSmartRef__":true,"id":1432},"mousedown":{"__isSmartRef__":true,"id":1433},"mousewheel":{"__isSmartRef__":true,"id":1434}},"1432":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1297},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1433":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1297},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1434":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1297},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1435":{"x":1708,"y":569,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1436":{"submorphs":[],"scripts":[],"id":67,"shape":{"__isSmartRef__":true,"id":1437},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1440},"_Position":{"__isSmartRef__":true,"id":1445},"owner":{"__isSmartRef__":true,"id":0},"showsHalos":false,"halos":[],"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Box"},"1437":{"position":{"__isSmartRef__":true,"id":1438},"extent":{"__isSmartRef__":true,"id":1439},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":1302},"fill":{"__isSmartRef__":true,"id":1319},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1438":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1439":{"x":100,"y":100,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1440":{"morph":{"__isSmartRef__":true,"id":1436},"dispatchTable":{"__isSmartRef__":true,"id":1441},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1441":{"mouseup":{"__isSmartRef__":true,"id":1442},"mousedown":{"__isSmartRef__":true,"id":1443},"mousewheel":{"__isSmartRef__":true,"id":1444}},"1442":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1436},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1443":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1436},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1444":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1436},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1445":{"x":937,"y":440,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1446":{"position":{"__isSmartRef__":true,"id":1447},"extent":{"__isSmartRef__":true,"id":1448},"fill":{"__isSmartRef__":true,"id":1449},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1447":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1448":{"x":2800,"y":2900,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1449":{"r":0.9,"g":0.9,"b":0.9,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1450":{"morph":{"__isSmartRef__":true,"id":0},"dispatchTable":{"__isSmartRef__":true,"id":1451},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1451":{"contextmenu":{"__isSmartRef__":true,"id":1452},"mouseup":{"__isSmartRef__":true,"id":1453},"mousedown":{"__isSmartRef__":true,"id":1454},"mousemove":{"__isSmartRef__":true,"id":1455},"selectstart":{"__isSmartRef__":true,"id":1456},"keydown":{"__isSmartRef__":true,"id":1457}},"1452":{"type":"contextmenu","target":{"__isSmartRef__":true,"id":0},"targetMethodName":"onContextMenu","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1453":{"type":"mouseup","target":{"__isSmartRef__":true,"id":0},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1454":{"type":"mousedown","target":{"__isSmartRef__":true,"id":0},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1455":{"type":"mousemove","target":{"__isSmartRef__":true,"id":0},"targetMethodName":"onMouseMove","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1456":{"type":"selectstart","target":{"__isSmartRef__":true,"id":0},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1457":{"type":"keydown","target":{"__isSmartRef__":true,"id":1024},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1458":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1459":{"name":"Local code","__LivelyClassName__":"ChangeSet","__SourceModuleName__":"Global.lively.ChangeSet"},"1460":{"submorphs":[{"__isSmartRef__":true,"id":1461},{"__isSmartRef__":true,"id":1477},{"__isSmartRef__":true,"id":1493}],"scripts":[],"id":1,"shape":{"__isSmartRef__":true,"id":1508},"droppingEnabled":true,"halosEnabled":true,"registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1511},"_Position":{"__isSmartRef__":true,"id":1516},"items":[{"__isSmartRef__":true,"id":1517},{"__isSmartRef__":true,"id":1518}],"itemMorphs":[{"__isSmartRef__":true,"id":1477},{"__isSmartRef__":true,"id":1493}],"title":{"__isSmartRef__":true,"id":1461},"owner":null,"__SourceModuleName__":"Global.lively.morphic.Widgets","__LivelyClassName__":"lively.morphic.Menu"},"1461":{"submorphs":[],"scripts":[],"id":2,"cachedTextString":"","shape":{"__isSmartRef__":true,"id":1462},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":true,"allowsInput":false,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1467},"_Position":{"__isSmartRef__":true,"id":1476},"_MaxTextWidth":null,"_MaxTextHeight":20,"textColor":{"__isSmartRef__":true,"id":1465},"isLabel":true,"eventsAreIgnored":true,"owner":{"__isSmartRef__":true,"id":1460},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1462":{"position":{"__isSmartRef__":true,"id":1463},"extent":{"__isSmartRef__":true,"id":1464},"borderWidth":0,"borderColor":{"__isSmartRef__":true,"id":1465},"fill":{"__isSmartRef__":true,"id":1466},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1463":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1464":{"x":100,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1465":{"r":0,"g":0,"b":0,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1466":{"r":1,"g":1,"b":1,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1467":{"morph":{"__isSmartRef__":true,"id":1461},"dispatchTable":{"__isSmartRef__":true,"id":1468},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1468":{"mouseup":{"__isSmartRef__":true,"id":1469},"mousedown":{"__isSmartRef__":true,"id":1470},"selectstart":{"__isSmartRef__":true,"id":1471},"mousewheel":{"__isSmartRef__":true,"id":1472},"keydown":{"__isSmartRef__":true,"id":1473},"keyup":{"__isSmartRef__":true,"id":1474},"keypress":{"__isSmartRef__":true,"id":1475}},"1469":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1470":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1471":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1472":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1473":{"type":"keydown","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1474":{"type":"keyup","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1475":{"type":"keypress","target":{"__isSmartRef__":true,"id":1461},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1476":{"x":0,"y":-20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1477":{"submorphs":[],"scripts":[],"id":3,"cachedTextString":"Tools","shape":{"__isSmartRef__":true,"id":1478},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1482},"_Position":{"__isSmartRef__":true,"id":1492},"_MaxTextWidth":null,"_MaxTextHeight":20,"textColor":{"__isSmartRef__":true,"id":1465},"owner":{"__isSmartRef__":true,"id":1460},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1478":{"position":{"__isSmartRef__":true,"id":1479},"extent":{"__isSmartRef__":true,"id":1480},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":1465},"fill":{"__isSmartRef__":true,"id":1481},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1479":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1480":{"x":100,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1481":{"r":0.95,"g":0.95,"b":0.95,"a":1,"__SourceModuleName__":"Global","__LivelyClassName__":"Color"},"1482":{"morph":{"__isSmartRef__":true,"id":1477},"dispatchTable":{"__isSmartRef__":true,"id":1483},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1483":{"mouseup":{"__isSmartRef__":true,"id":1484},"mousedown":{"__isSmartRef__":true,"id":1485},"selectstart":{"__isSmartRef__":true,"id":1486},"mousewheel":{"__isSmartRef__":true,"id":1487},"keydown":{"__isSmartRef__":true,"id":1488},"keyup":{"__isSmartRef__":true,"id":1489},"keypress":{"__isSmartRef__":true,"id":1490},"mouseover":{"__isSmartRef__":true,"id":1491}},"1484":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1485":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1486":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1487":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1488":{"type":"keydown","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1489":{"type":"keyup","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1490":{"type":"keypress","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1491":{"type":"mouseover","target":{"__isSmartRef__":true,"id":1477},"targetMethodName":"onMouseOver","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1492":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1493":{"submorphs":[],"scripts":[],"id":4,"cachedTextString":"save world","shape":{"__isSmartRef__":true,"id":1494},"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"fixedWidth":false,"fixedHeight":true,"allowsInput":true,"_OverflowMode":"visible","_FontFamily":"Helvetica","registeredForMouseEvents":true,"eventHandler":{"__isSmartRef__":true,"id":1497},"_Position":{"__isSmartRef__":true,"id":1507},"_MaxTextWidth":null,"_MaxTextHeight":20,"textColor":{"__isSmartRef__":true,"id":1465},"owner":{"__isSmartRef__":true,"id":1460},"__SourceModuleName__":"Global.lively.morphic.Core","__LivelyClassName__":"lively.morphic.Text"},"1494":{"position":{"__isSmartRef__":true,"id":1495},"extent":{"__isSmartRef__":true,"id":1496},"borderWidth":1,"borderColor":{"__isSmartRef__":true,"id":1465},"fill":{"__isSmartRef__":true,"id":1481},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1495":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1496":{"x":100,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1497":{"morph":{"__isSmartRef__":true,"id":1493},"dispatchTable":{"__isSmartRef__":true,"id":1498},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1498":{"mouseup":{"__isSmartRef__":true,"id":1499},"mousedown":{"__isSmartRef__":true,"id":1500},"selectstart":{"__isSmartRef__":true,"id":1501},"mousewheel":{"__isSmartRef__":true,"id":1502},"keydown":{"__isSmartRef__":true,"id":1503},"keyup":{"__isSmartRef__":true,"id":1504},"keypress":{"__isSmartRef__":true,"id":1505},"mouseover":{"__isSmartRef__":true,"id":1506}},"1499":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1500":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1501":{"type":"selectstart","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onSelectStart","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1502":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1503":{"type":"keydown","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onKeyDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1504":{"type":"keyup","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onKeyUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1505":{"type":"keypress","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onKeyPress","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1506":{"type":"mouseover","target":{"__isSmartRef__":true,"id":1493},"targetMethodName":"onMouseOver","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1507":{"x":0,"y":20,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1508":{"position":{"__isSmartRef__":true,"id":1509},"extent":{"__isSmartRef__":true,"id":1510},"fill":{"__isSmartRef__":true,"id":1466},"__SourceModuleName__":"Global.lively.morphic.Shapes","__LivelyClassName__":"lively.morphic.Shapes.Rectangle"},"1509":{"x":0,"y":0,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1510":{"x":100,"y":40,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1511":{"morph":{"__isSmartRef__":true,"id":1460},"dispatchTable":{"__isSmartRef__":true,"id":1512},"__SourceModuleName__":"Global.lively.morphic.Events","__LivelyClassName__":"lively.morphic.EventHandler"},"1512":{"mouseup":{"__isSmartRef__":true,"id":1513},"mousedown":{"__isSmartRef__":true,"id":1514},"mousewheel":{"__isSmartRef__":true,"id":1515}},"1513":{"type":"mouseup","target":{"__isSmartRef__":true,"id":1460},"targetMethodName":"onMouseUp","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1514":{"type":"mousedown","target":{"__isSmartRef__":true,"id":1460},"targetMethodName":"onMouseDown","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1515":{"type":"mousewheel","target":{"__isSmartRef__":true,"id":1460},"targetMethodName":"onMouseWheel","handleOnCapture":false,"doNotSerialize":["node"],"unregisterMethodName":"unregisterHTMLAndSVGAndCANVAS"},"1516":{"x":982,"y":316,"__SourceModuleName__":"Global","__LivelyClassName__":"Point"},"1517":{"isMenuItem":true,"string":"Tools","value":"Tools","idx":0,"onClickCallback":null},"1518":{"isMenuItem":true,"string":"save world","value":"save world","idx":1},"isSimplifiedRegistry":true}}]]>