/*******************************************************************************
* This file is part of the Symfony eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
******************************************************************************/
package com.dubture.symfony.ui.editor.hover;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.php.internal.ui.editor.hover.PHPDocumentationHover;
import com.dubture.symfony.core.log.Logger;
import com.dubture.symfony.core.model.SymfonyModelAccess;
import com.dubture.symfony.index.model.Route;
/**
*
* Creates the hoverInfo when hovering over routes.
*
*
* @author Robert Gruendler <r.gruendler@gmail.com>
*
*/
@SuppressWarnings("restriction")
public class RouteHover extends PHPDocumentationHover {
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
RouteBrowserInformationControlInput info = (RouteBrowserInformationControlInput) getHoverInfo2(
textViewer, hoverRegion);
return info != null ? info.getHtml() : null;
}
@Override
public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
IModelElement[] elements = getElementsAt(textViewer, hoverRegion);
if (elements == null || elements.length > 0)
return null;
ISourceModule sm = getEditorInputModelElement();
try {
String source = sm.getSource();
String selection = source.substring(hoverRegion.getOffset(), hoverRegion.getOffset() + hoverRegion.getLength());
if (selection != null && selection.length() > 0) {
Route route = SymfonyModelAccess.getDefault().findRoute(selection, sm.getScriptProject());
if (route != null) {
RouteBrowserInformationControlInput info = new RouteBrowserInformationControlInput(null, route);
return info;
}
}
} catch (Exception e2) {
Logger.logException(e2);
}
return null;
}
}