/*
 * OCaml Support For IntelliJ Platform.
 * Copyright (C) 2010 Maxim Manuylov
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/gpl-2.0.html>.
 */
package manuylov.maxim.ocaml.lang.feature.completion;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.swing.*;
import javax.swing.border.Border;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.event.CaretListener;
import com.intellij.openapi.editor.event.EditorMouseEventArea;
import com.intellij.openapi.editor.event.EditorMouseListener;
import com.intellij.openapi.editor.event.EditorMouseMotionListener;
import com.intellij.openapi.editor.event.SelectionListener;
import com.intellij.openapi.editor.markup.MarkupModel;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.project.Project;
import consulo.disposer.Disposable;
import consulo.util.dataholder.Key;
/**
 * @author Maxim.Manuylov
 *         Date: 26.05.2010
 */
@SuppressWarnings({"ConstantConditions"})
public class MockEditor implements Editor
{
	@Nonnull
	public Document getDocument()
	{
		return new MyMockDocument();
	}
	public boolean isViewer()
	{
		return false;
	}
	@Nonnull
	public JComponent getComponent()
	{
		return null;
	}
	@Nonnull
	public JComponent getContentComponent()
	{
		return null;
	}
	@Override
	public void setBorder(@Nullable Border border)
	{
		
	}
	@Override
	public Insets getInsets()
	{
		return null;
	}
	@Nonnull
	public SelectionModel getSelectionModel()
	{
		return new SelectionModel()
		{
			public int getSelectionStart()
			{
				return 0;
			}
			@Nullable
			@Override
			public VisualPosition getSelectionStartPosition()
			{
				return null;
			}
			public int getSelectionEnd()
			{
				return 0;
			}
			@Nullable
			@Override
			public VisualPosition getSelectionEndPosition()
			{
				return null;
			}
			public String getSelectedText()
			{
				return null;
			}
			@Nullable
			@Override
			public String getSelectedText(boolean b)
			{
				return null;
			}
			public int getLeadSelectionOffset()
			{
				return 0;
			}
			@Nullable
			@Override
			public VisualPosition getLeadSelectionPosition()
			{
				return null;
			}
			public boolean hasSelection()
			{
				return false;
			}
			@Override
			public boolean hasSelection(boolean b)
			{
				return false;
			}
			public void setSelection(final int startOffset, final int endOffset)
			{
			}
			@Override
			public void setSelection(int i, @Nullable VisualPosition visualPosition, int i1)
			{
			}
			@Override
			public void setSelection(@Nullable VisualPosition visualPosition, int i, @Nullable VisualPosition visualPosition1, int i1)
			{
			}
			public void removeSelection()
			{
			}
			@Override
			public void removeSelection(boolean b)
			{
			}
			public void addSelectionListener(final SelectionListener listener)
			{
			}
			public void removeSelectionListener(final SelectionListener listener)
			{
			}
			public void selectLineAtCaret()
			{
			}
			public void selectWordAtCaret(final boolean honorCamelWordsSettings)
			{
			}
			public void copySelectionToClipboard()
			{
			}
			public void setBlockSelection(final LogicalPosition blockStart, final LogicalPosition blockEnd)
			{
			}
			public void removeBlockSelection()
			{
			}
			public boolean hasBlockSelection()
			{
				return false;
			}
			@Nonnull
			public int[] getBlockSelectionStarts()
			{


Answer: 				return new int[0];