/*******************************************************************************
* 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 com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RequiresResize;
import com.google.gwt.user.client.ui.Widget;
import org.eclipse.che.ide.api.editor.EditorWithErrors;
import org.eclipse.che.ide.api.editor.codeassist.CompletionsSource;
import org.eclipse.che.ide.api.editor.keymap.Keymap;
import org.eclipse.che.ide.api.editor.text.TextPosition;
/**
* View interface for the text editors components.
*
* @author "Mickaƫl Leduque"
*/
public interface TextEditorPartView extends RequiresResize, IsWidget, HasNotificationPanel {
/**
* Invoke the code complete dialog.
*
* @param editorWidget
* the editor widget
* @param completionsSource
* the completion source
*/
void showCompletionProposals(EditorWidget editorWidget, CompletionsSource completionsSource);
/**
* Invoke the code complete dialog with default completion.
*
* @param editorWidget
* the editor widget
*/
void showCompletionProposals(EditorWidget editorWidget);
/**
* Sets the view delegate.
*
* @param delegate
* the delegate
*/
void setDelegate(Delegate delegate);
/**
* Sets the editor widget.
*
* @param editorWidget
* the widget
*/
void setEditorWidget(EditorWidget editorWidget);
/**
* Display a placeholder in place of the editor widget.
*
* @param placeHolder
* the widget to display
*/
void showPlaceHolder(Widget placeHolder);
/**
* Sets whether the info panel is visible.
*
* @param visible
* {@code true} to show the info panel, {@code false} to hide it
*/
void setInfoPanelVisible(boolean visible);
/**
* Sets the initial state of the info panel.
*
* @param mode
* the file mode
* @param keymap
* the current keymap
* @param lineCount
* the number of lines
* @param tabSize
* the tab size in this editor
*/
void initInfoPanel(String mode, Keymap keymap, int lineCount, int tabSize);
/**
* Update the location displayed in the info panel.
*
* @param position
* the new position
*/
void updateInfoPanelPosition(TextPosition position);
/**
* Update the values in the info panel for when the editor is not focused (i.e. show line count and not char part).
*
* @param lineCount
* the number of lines in the file
*/
void updateInfoPanelUnfocused(int lineCount);
/** Delegate interface for this view. */
interface Delegate extends EditorWithErrors, RequiresResize {
/** Reaction on loss of focus. */
void editorLostFocus();
/** Reaction when the editor gains focus. */
void editorGotFocus();
/** Reaction when the cursor position changes. */
void editorCursorPositionChanged();
}
}