/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.api.editor.texteditor; import org.eclipse.che.ide.api.editor.EditorPartPresenter; import org.eclipse.che.ide.api.editor.document.Document; import org.eclipse.che.ide.api.editor.editorconfig.EditorUpdateAction; import org.eclipse.che.ide.api.editor.editorconfig.TextEditorConfiguration; import org.eclipse.che.ide.api.editor.keymap.KeyBinding; import org.eclipse.che.ide.api.editor.position.PositionConverter; import org.eclipse.che.ide.api.editor.text.LinearRange; import org.eclipse.che.ide.api.editor.text.TextPosition; import org.eclipse.che.ide.api.editor.text.TextRange; import javax.validation.constraints.NotNull; /** * Public view on the editor component. */ public interface TextEditor extends EditorPartPresenter { /** * Initializes this editor with the configuration and document provider. * * @param configuration * the configuration of this editor. */ void initialize(@NotNull TextEditorConfiguration configuration); /** * Returns the text editor configuration that was used for initialization. * * @return the text editor configuration */ TextEditorConfiguration getConfiguration(); /** * @return the text editor view implementation */ @Override TextEditorPartView getView(); /** * @return the text editor widget */ EditorWidget getEditorWidget(); /** * Add an editor-specific key binding. * * @param keyBinding * the key binding */ void addKeybinding(KeyBinding keyBinding); /** * Closes this text editor after optionally saving changes. * * @param save * <code>true</code> if unsaved changed should be saved, and <code>false</code> if unsaved changed should be discarded */ @Override void close(boolean save); /** * Returns whether the text in this text editor can be changed by the user. * * @return <code>true</code> if it can be edited, and <code>false</code> if it is read-only */ boolean isEditable(); /** * Abandons all modifications applied to this text editor's input element's textual presentation since the last save operation. */ void doRevertToSaved(); /** * Returns the document backing the text content. * @return the document */ Document getDocument(); /** * Return the content type of the editor content.<br> * Returns null if the type is not known yet. * * @return the content type */ String getContentType(); /** * Returns the selection range as a {@link TextRange} (i.e. two line, char objects: start en end). * @return the selection range */ TextRange getSelectedTextRange(); /** * Returns the selection range as a {@link LinearRange} (ie.e a start offset and a length). * @return the selection range */ LinearRange getSelectedLinearRange(); /** * Returns the cursor position as a {@link TextPosition} object (a line char position). * @return the cursor position */ TextPosition getCursorPosition(); /** * Returns the cursor model for the editor. * @return the cursor model */ CursorModelWithHandler getCursorModel(); /** * Returns a position converter relative to this editor (pixel coordinates <-> line char positions). * * @return a position converter */ PositionConverter getPositionConverter(); /** * Returns the cursor position as an offset from the start. * @return the cursor position */ int getCursorOffset(); /** * Returns the top visible line. Used to determine editor vertical scroll position * @return the top visible line */ int getTopVisibleLine(); /** * Set (scroll) top visible line * @param line * the top line */ void setTopLine(int line); /** * Displays a message to the user. * @param message message */ void showMessage(String message); /** * Returns focus state of the text editor * @return <code>true</code> if the text editor is focused or <code>false</code> otherwise */ boolean isFocused(); /** Give the focus to the editor. */ void setFocus(); /** Calls all editor update actions for this editor. */ void refreshEditor(); /** * Adds an editor update action for this editor. * @param action the action to add */ void addEditorUpdateAction(EditorUpdateAction action); }