/*******************************************************************************
* Copyright (c) 2007 IBM Corporation.
* 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:
* Robert Fuhrer (rfuhrer@watson.ibm.com) - initial API and implementation
*******************************************************************************/
package org.eclipse.imp.services;
import org.eclipse.imp.language.ILanguageService;
import org.eclipse.imp.parser.IParseController;
/**
* Specifies methods to support the construction of hyperlinks between
* AST nodes.
*
* @author sutton
*
*/
public interface IReferenceResolver extends ILanguageService {
/**
* Returns the AST node that represents the target of a hyperlink that
* has the given AST node as a source and that is interpreted in the
* context of the AST represented by the given parse controller.
*
* Normally the source and target nodes should both occur in the AST
* represented by the given parse controller.
*
* @param node The AST node to be considered as the source
* of a hyperlink
* @param parseController The parse controller that contains the AST with
* respect to which the link is defined
* @return The AST node that is the target of the hyperlink,
* if found, or null if no target node has been found
*/
public Object getLinkTarget(Object node, IParseController parseController);
/**
* Returns a text string to be associated with a hyperlink.
*
* Historical note: So far in practice we have obtained the link
* text from the source node. This method may also be used with the
* target node. If a need arises, we can add another method that
* would take two nodes. SMS 13 Jun 2006.
*
* @param node The node with respect to which the link text is
* to be determined
* @return The link text determined with respect to the
* given node.
*/
public String getLinkText(Object node);
}