diff src/editor.tp @ 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
line wrap: on
line diff
--- 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)
 }