@Override public void execute(final jetbrains.mps.openapi.editor.EditorContext context) { EditorComponent editorComponent = ((EditorComponent) context.getEditorComponent()); SelectionManager selectionManager = editorComponent.getSelectionManager(); Selection selection = selectionManager.getSelection(); if (selection instanceof SingularSelection) { EditorCell selectedCell = ((SingularSelection) selection).getEditorCell(); SNode selectedNode = selectedCell.getSNode(); SNode topMostNodeInSingularContainment = findTopMostNodeWithSingularContainment(selectedNode); if (topMostNodeInSingularContainment != selectedNode) { EditorCell nodeCell = editorComponent.findNodeCell(topMostNodeInSingularContainment); if (nodeCell != null) { editorComponent.pushSelection(nodeCell); editorComponent.scrollToCell(nodeCell); } } else { Selection newSelection = selectionManager.createRangeSelection(selectedNode, selectedNode); if (newSelection instanceof NodeRangeSelection && selectedCell.isBigCell()) { newSelection = ((NodeRangeSelection) newSelection).enlargeSelection(myUp); } if (newSelection != null) { selectionManager.pushSelection(newSelection); newSelection.ensureVisible(); } } } else if (selection instanceof NodeRangeSelection) { Selection newSelection = ((NodeRangeSelection) selection).enlargeSelection(myUp); if (newSelection != null) { selectionManager.pushSelection(newSelection); newSelection.ensureVisible(); } } }
public void execute(jetbrains.mps.openapi.editor.EditorContext context) { EditorComponent editorComponent = ((EditorComponent) context.getEditorComponent()); EditorCell target = findTarget(editorComponent); if (target instanceof EditorCell_Label) { EditorCell_Label label = (EditorCell_Label) target; label.end(); editorComponent.resetLastCaretX(); } editorComponent.changeSelection(target); }
public void execute(jetbrains.mps.openapi.editor.EditorContext context) { EditorCell selectedCell = getDeepestSelectedCell(context); int caretX = selectedCell.getCaretX(); EditorComponent editorComponent = (EditorComponent) context.getEditorComponent(); if (editorComponent.hasLastCaretX()) { caretX = editorComponent.getLastCaretX(); } editorComponent.saveLastCaretX(caretX); EditorCell target = findTarget(selectedCell, caretX); target.setCaretX(caretX); editorComponent.changeSelection(target, false); }
private EditorCell findTarget(EditorComponent editorComponent) { Selection selection = editorComponent.getSelectionManager().getSelection(); if (selection == null) { return null; } List<EditorCell> selectedCells = selection.getSelectedCells(); EditorCell cell = selectedCells.get(selectedCells.size() - 1); return cell.getEndCell(CellConditions.SELECTABLE); }
private static void navigatePage( jetbrains.mps.openapi.editor.EditorContext context, boolean isDown) { EditorComponent editor = (EditorComponent) context.getEditorComponent(); jetbrains.mps.openapi.editor.cells.EditorCell selection = editor.getSelectedCell(); Rectangle rect = editor.getVisibleRect(); int height = (int) rect.getHeight(); height = isDown ? height : -height; int caretX = selection.getCaretX(); int y = selection.getY() + (selection.getHeight() / 2); int newY = y + height; jetbrains.mps.openapi.editor.cells.EditorCell target = editor.findCellWeak(caretX, newY); if (target == null) { target = isDown ? editor.myRootCell.findChild(CellFinders.LAST_SELECTABLE_LEAF) : editor.myRootCell.findChild(CellFinders.FIRST_SELECTABLE_LEAF); editor.changeSelection(target); } else { target.setCaretX(caretX); editor.changeSelection(target); } }
public void execute(jetbrains.mps.openapi.editor.EditorContext context) { EditorComponent editorComponent = (EditorComponent) context.getEditorComponent(); EditorCell selection = editorComponent.getSelectedCell(); editorComponent.changeSelection(selection.getPrevLeaf(CellConditions.EDITABLE)); }