/* * EditSession.java * * Copyright (C) 2009-12 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.workbench.views.source.editors.text.ace; import org.rstudio.studio.client.workbench.views.output.lint.model.AceAnnotation; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.core.client.JsArrayString; public class EditSession extends JavaScriptObject { protected EditSession() {} public native final String getValue() /*-{ return this.toString(); }-*/; public native final String getState(int row) /*-{ return this.getState(row); }-*/; public native final String getTabString() /*-{ return this.getTabString(); }-*/; public native final int getTabSize() /*-{ return this.getTabSize(); }-*/; public native final void setValue(String code) /*-{ this.setValue(code); }-*/; public native final void setUseWorker(boolean useWorker) /*-{ this.setUseWorker(useWorker); }-*/; public native final void insert(Position position, String text) /*-{ this.insert(position, text); }-*/; public native final Selection getSelection() /*-{ return this.getSelection(); }-*/; public native final Position replace(Range range, String text) /*-{ return this.replace(range, text); }-*/; public native final String getTextRange(Range range) /*-{ return this.getTextRange(range); }-*/; public native final String getLine(int row) /*-{ return this.getLine(row); }-*/; public native final JsArrayString getLines(int startRow, int endRow) /*-{ return this.getLines(startRow, endRow); }-*/; public native final void setUseWrapMode(boolean useWrapMode) /*-{ return this.setUseWrapMode(useWrapMode); }-*/; public native final void setWrapLimitRange(int min, int max) /*-{ this.setWrapLimitRange(min, max); }-*/; public native final void setUseSoftTabs(boolean on) /*-{ this.setUseSoftTabs(on); }-*/; public native final void setTabSize(int tabSize) /*-{ this.setTabSize(tabSize); }-*/; /** * Number of rows */ public native final int getLength() /*-{ return this.getLength(); }-*/; public native final void setEditorMode(String parserName, boolean suppressHighlighting) /*-{ // find the appropriate editor mode and check to see whether it matches // the existing mode; if it does, no need to recreate it var Mode = $wnd.require(parserName).Mode; var existingMode = this.getMode(); if (existingMode && existingMode.constructor == Mode) return; this.setMode(new Mode(suppressHighlighting, this)); }-*/; public native final Mode getMode() /*-{ return this.getMode(); }-*/; public native final void setDisableOverwrite(boolean disableOverwrite) /*-{ this.setDisableOverwrite(disableOverwrite); }-*/; public native final int documentToScreenRow(Position position) /*-{ return this.documentToScreenRow(position.row, position.column); }-*/; public native final int getScreenLength() /*-{ return this.getScreenLength(); }-*/; public native final void setScrollLeft(int left) /*-{ this.setScrollLeft(left); }-*/; public native final void setScrollTop(int top) /*-{ this.setScrollTop(top); }-*/; public native final int getScrollTop() /*-{ return this.getScrollTop(); }-*/; public native final UndoManager getUndoManager() /*-{ return this.getUndoManager(); }-*/; public native final Document getDocument() /*-{ return this.getDocument(); }-*/; public native final void setNewLineMode(String type) /*-{ this.setNewLineMode(type); }-*/; public native final void reindent(Range range) /*-{ this.reindent(range); }-*/; public native final void foldAll() /*-{ this.foldAll(); }-*/; public native final void unfoldAll() /*-{ this.unfold(); }-*/; public native final void toggleFold() /*-{ this.toggleFold(false); }-*/; public native final JsArray<AceFold> getAllFolds() /*-{ return this.getAllFolds(); }-*/; public native final AceFold getFoldAt(Position position) /*-{ return this.getFoldAt(position.row, position.column); }-*/; public native final AceFold getFoldAt(int row, int column) /*-{ return this.getFoldAt(row, column); }-*/; public native final void addFold(String placeholder, Range range) /*-{ this.addFold(placeholder, range); }-*/; public native final void unfold(Range range, boolean expandInner) /*-{ this.unfold(range, expandInner); }-*/; public native final void unfold(Position pos, boolean expandInner) /*-{ this.unfold(pos, expandInner); }-*/; public native final void unfold(int row, boolean expandInner) /*-{ this.unfold(row, expandInner); }-*/; public native final int addMarker(Range range, String clazz, String type, boolean inFront) /*-{ return this.addMarker(range, clazz, type, inFront); }-*/; public native final int addMarker(Range range, String clazz, JavaScriptObject renderer, boolean inFront) /*-{ return this.addMarker(range, clazz, renderer, inFront); }-*/; public native final void removeMarker(int markerId) /*-{ this.removeMarker(markerId); }-*/; public native final void setBreakpoint(int line) /*-{ this.setBreakpoint(line); }-*/; public native final void clearBreakpoint(int line) /*-{ this.clearBreakpoint(line); }-*/; public native final void setBreakpoints(int[] lines) /*-{ this.setBreakpoints(lines); }-*/; public native final void clearBreakpoints(int[] lines) /*-{ this.clearBreakpoints(lines); }-*/; public native final void setAnnotations(JsArray<AceAnnotation> annotations) /*-{ this.setAnnotations(annotations); }-*/; public native final JsArray<AceAnnotation> getAnnotations() /*-{ return this.getAnnotations(); }-*/; public native final Markers getMarkers(boolean inFront) /*-{ return this.getMarkers(inFront); }-*/; public native final Marker getMarker(int id) /*-{ return this.getMarkers(true)[id]; }-*/; public final AnchoredRange createAnchoredRange(Position start, Position end) { return createAnchoredRange(start, end, true); } public final native AnchoredRange createAnchoredRange(Position start, Position end, boolean insertRight) /*-{ var Range = $wnd.require("ace/range").Range; var result = new Range(); result.start = this.doc.createAnchor(start.row, start.column); result.end = this.doc.createAnchor(end.row, end.column); result.end.$insertRight = insertRight; return result; }-*/; public native final void setWorkerTimeout(int delayMs) /*-{ var worker = this.$worker; if (worker && worker.setTimeout) worker.setTimeout(delayMs); }-*/; public final Token getTokenAt(Position position) { return getTokenAt(position.getRow(), position.getColumn()); } public native final JsArray<Token> getTokens(int row) /*-{ return this.getTokens(row); }-*/; public native final Token getTokenAt(int row, int column) /*-{ var token = this.getTokenAt(row, column); if (token == null) return null; token.column = token.start; return token; }-*/; public native final void setFoldStyle(String style) /*-{ this.setFoldStyle(style); }-*/; }