Mercurial > repos > tabletprog
changeset 118:0a66fe3a368a
Allow selection and navigation of assignment nodes.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 15 Apr 2013 21:55:26 -0700 |
parents | f4e464a17579 |
children | 77f7cd65e121 |
files | editor.css editor.js src/editor.tp |
diffstat | 3 files changed, 43 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/editor.css Mon Apr 15 21:35:37 2013 -0700 +++ b/editor.css Mon Apr 15 21:55:26 2013 -0700 @@ -163,6 +163,11 @@ display: block; } +.varname:after +{ + content: ' <-'; +} + .lambda { display: inline;
--- a/editor.js Mon Apr 15 21:35:37 2013 -0700 +++ b/editor.js Mon Apr 15 21:55:26 2013 -0700 @@ -41,11 +41,16 @@ assignment.prototype.toHTML = function(node, up) { this.up = up; + var astNode = this; var base = newEl('div', { - className: 'assignment' + className: 'assignment', + onclick: function(event) { + main_module.assignClick(this, astNode, event); + } }); var varName = newEl('span', { - textContent: this.symbol.name + ' <-' + textContent: this.symbol.name, + className: 'varname' }); this.domNode = base; base.appendChild(varName);
--- a/src/editor.tp Mon Apr 15 21:35:37 2013 -0700 +++ b/src/editor.tp Mon Apr 15 21:55:26 2013 -0700 @@ -64,6 +64,25 @@ } } +setSelection <- :astnode { + fakeEvent <- #{ + stopPropagation <- :Blah { + } + } + selection <- #{ + valid? <- true + in <- { + } + out <- { + fakeEvent <- #{ + stopPropagation <- :Blah { + } + } + ((astnode up) domNode) onclick: fakeEvent + } + } +} + editFile <- :path { get: path :request { addClass: (q: "body") "editorMode" @@ -118,6 +137,18 @@ domnode textContent!: key astnode name!: key } + setSelection: astnode + event stopPropagation: (foreign: undefined) +} + +assignClick <- :domnode astnode event { + selectParent: domnode + selectQuery: ".selectParent > .varname" in: domnode + popInscope: ((astnode symbols) allSymbols: (foreign: undefined)) onClick: :key { + (domnode firstChild) textContent!: key + (astnode symbol) name!: key + } + setSelection: astnode withInNode: (astnode expression) event stopPropagation: (foreign: undefined) }