@@ -82,7 +82,8 @@ abstract class CellTemplate<NodeT : ITypedNode, ConceptT : ITypedConcept>(val co
82
82
83
83
fun getReference () = reference ? : throw IllegalStateException (" reference isn't set yet" )
84
84
85
- fun createCellReference (node : ITypedNode ) = TemplateCellReference (getReference(), node.untypedReference())
85
+ fun createCellReference (node : INode ) = TemplateCellReference (getReference(), node.reference)
86
+ fun createCellReference (node : ITypedNode ) = createCellReference(node.untyped())
86
87
87
88
private fun applyTextReplacement (cellData : CellData , editorState : EditorState ) {
88
89
if (cellData is TextCellData ) {
@@ -139,9 +140,14 @@ class ConstantCellTemplate<NodeT : ITypedNode, ConceptT : ITypedConcept>(concept
139
140
inner class SideTransformWrapper (val nodeToWrap : INonExistingNode , val wrappingLink : IChildLink ) : ICodeCompletionAction {
140
141
override fun getMatchingText (): String = text
141
142
override fun getDescription (): String = concept.getShortName()
142
- override fun execute () {
143
+ override fun execute (editor : EditorComponent ) {
143
144
val wrapper = nodeToWrap.getParent()!! .getOrCreateNode(null ).addNewChild(nodeToWrap.getContainmentLink()!! , nodeToWrap.index(), concept)
144
145
wrapper.moveChild(wrappingLink, 0 , nodeToWrap.getOrCreateNode(null ))
146
+ editor.selectAfterUpdate {
147
+ val cell = editor.resolveCell(createCellReference(wrapper)).firstOrNull() ? : return @selectAfterUpdate null
148
+ val layoutable = cell.layoutable() ? : return @selectAfterUpdate null
149
+ CaretSelection (layoutable, layoutable.getLength())
150
+ }
145
151
}
146
152
147
153
override fun shadows (shadowed : ICodeCompletionAction ): Boolean {
@@ -166,7 +172,7 @@ class ConstantCellTemplate<NodeT : ITypedNode, ConceptT : ITypedConcept>(concept
166
172
return concept.getShortName()
167
173
}
168
174
169
- override fun execute () {
175
+ override fun execute (editor : EditorComponent ) {
170
176
location.replaceNode(concept)
171
177
}
172
178
}
@@ -263,8 +269,14 @@ open class PropertyCellTemplate<NodeT : ITypedNode, ConceptT : ITypedConcept>(co
263
269
return concept.getShortName()
264
270
}
265
271
266
- override fun execute () {
267
- location.getOrCreateNode(concept).setPropertyValue(property, value)
272
+ override fun execute (editor : EditorComponent ) {
273
+ val node = location.getOrCreateNode(concept)
274
+ node.setPropertyValue(property, value)
275
+ editor.selectAfterUpdate {
276
+ val cell = editor.resolveCell(createCellReference(node)).firstOrNull() ? : return @selectAfterUpdate null
277
+ val layoutable = cell.layoutable() ? : return @selectAfterUpdate null
278
+ CaretSelection (layoutable, layoutable.getLength())
279
+ }
268
280
}
269
281
}
270
282
@@ -306,9 +318,14 @@ class ReferenceCellTemplate<NodeT : ITypedNode, ConceptT : ITypedConcept, Target
306
318
return concept.getShortName()
307
319
}
308
320
309
- override fun execute () {
321
+ override fun execute (editor : EditorComponent ) {
310
322
val sourceNode = location.getOrCreateNode(concept)
311
323
sourceNode.setReferenceTarget(link, target)
324
+ editor.selectAfterUpdate {
325
+ val cell = editor.resolveCell(createCellReference(sourceNode)).firstOrNull() ? : return @selectAfterUpdate null
326
+ val layoutable = cell.layoutable() ? : return @selectAfterUpdate null
327
+ CaretSelection (layoutable, layoutable.getLength())
328
+ }
312
329
}
313
330
}
314
331
}
0 commit comments