package jetbrains.mps.baseLanguage.editor; /*Generated by MPS */ import jetbrains.mps.openapi.editor.EditorContext; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.openapi.editor.cells.EditorCell; import jetbrains.mps.openapi.editor.cells.EditorCell_Collection; import jetbrains.mps.openapi.editor.cells.CellTraversalUtil; public class CursorFocusUtils { public static void setCursorAfterModifierDeleted(EditorContext editorContext, SNode node, boolean backspace) { EditorCell currentCell = editorContext.getSelectedCell(); EditorCell_Collection parent = currentCell.getParent(); EditorCell cellToSelect = getNextCell(parent, currentCell, !(backspace)); if (cellToSelect != null) { editorContext.selectWRTFocusPolicy(cellToSelect); if (!(backspace)) { // TODO: should we set caret to the end of cell if backspace ? cellToSelect.setCaretX(0); } return; } else if (!(backspace)) { // TODO: shold we do same process if backspace? // try cells one level up (needed only for methods when Delete) EditorCell_Collection parentParent = parent.getParent(); cellToSelect = getNextCell(parentParent, parent, !(backspace)); if (cellToSelect != null) { editorContext.selectWRTFocusPolicy(cellToSelect); cellToSelect.setCaretX(0); return; } } editorContext.selectWRTFocusPolicy(node); } private static EditorCell getNextCell(EditorCell_Collection parent, EditorCell anchorCell, boolean forward) { return (forward ? CellTraversalUtil.getNextSibling(anchorCell) : CellTraversalUtil.getPrevSibling(anchorCell)); } }