/*
 * 02/16/2012
 *
 * Copyright (C) 2013 Robert Futrell
 * robert_futrell at users.sourceforge.net
 * http://fifesoft.com/rsyntaxtextarea
 *
 * This library is distributed under a modified BSD license.  See the included
 * RSyntaxTextArea.License.txt file for details.
 */
package com.fr.design.gui.syntax.ui.rsyntaxtextarea;

import javax.swing.event.HyperlinkEvent;


/**
 * A result object from a {@link LinkGenerator}.  Implementations of this class
 * specify what action to execute when the user clicks on the "link" specified
 * by the <code>LinkGenerator</code>.  Typically, this will do something like
 * select another region of text in the document (the declaration of the
 * variable at the mouse position), or open another file in the parent
 * application, etc.
 *
 * @author Robert Futrell
 * @version 1.0
 * @see SelectRegionLinkGeneratorResult
 */
public interface LinkGeneratorResult {


	/**
	 * Executes the action associated with this object.  If the result is a
	 * URL to open, a standard hyperlink event can be returned.  Alternatively,
	 * <code>null</code> can be returned and the action performed in this
	 * method itself.
	 *
	 * @return The hyperlink event to broadcast from the text area, or
	 *         <code>null</code> if the action's behavior occurs in this method
	 *         directly.
	 */
	public HyperlinkEvent execute();


	/**
	 * Returns the starting offset of the link specified by the parent
	 * <code>LinkGenerator</code>.
	 *
	 * @return The offset.
	 */
	public int getSourceOffset();


}