/*******************************************************************************
* 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.quickfix;
import elemental.dom.Element;
import org.eclipse.che.ide.api.editor.codeassist.CodeAssistCallback;
/**
* An <code>QuickAssistAssistant</code> provides support for quick fixes and quick
* assists.
* Its purpose is to propose, display, and insert quick assists and quick fixes
* available at the current source viewer's quick assist invocation context.
*/
public interface QuickAssistAssistant {
/**
* Shows all possible quick fixes and quick assists at the viewer's cursor position.
*
* @param line the line on which the assist was triggered
* @param anchorElement element used for position
*/
void showPossibleQuickAssists(int line, Element anchorElement);
/**
* Shows all possible quick fixes and quick assists at the viewer's cursor position.
*
* @param offset the offset on which the assist was triggered
* @param coordX horizontal offset used for position
* @param coordX vertical offset used for position
*/
void showPossibleQuickAssists(int offset, float coordX, float coordY);
/**
* Compute the quick assist proposals.
*
* @param line the line on which the assist was triggered
* @param callback called when computation is done
*/
void computeQuickAssist(int line, CodeAssistCallback callback);
/**
* Registers a given quick assist processor for a particular content type. If there is already
* a processor registered, the new processor is registered instead of the old one.
*
* @param processor
* the quick assist processor to register, or <code>null</code> to remove
* an existing one
*/
void setQuickAssistProcessor(QuickAssistProcessor processor);
/**
* Returns the quick assist processor to be used for the given content type.
*
* @return the quick assist processor or <code>null</code> if none exists
*/
QuickAssistProcessor getQuickAssistProcessor();
}