/* * Copyright 2015 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.hyperlink; import org.eclipse.core.resources.IFile; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.hyperlink.IHyperlink; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.robotframework.ide.eclipse.main.plugin.project.library.SourceOpeningSupport; import com.google.common.base.Function; /** * @author Michal Anglart */ public class FileHyperlink implements IHyperlink { private final IRegion source; private final IFile destinationFile; private final String label; private final Function<IFile, Void> operationToPerformAfterOpening; public FileHyperlink(final IRegion from, final IFile toFile, final String label, final Function<IFile, Void> operationToPerformAfterOpening) { this.source = from; this.destinationFile = toFile; this.label = label; this.operationToPerformAfterOpening = operationToPerformAfterOpening; } @Override public IRegion getHyperlinkRegion() { return source; } @Override public String getTypeLabel() { return null; } @Override public String getHyperlinkText() { return label; } @Override public void open() { final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); SourceOpeningSupport.tryToOpenInEditor(page, destinationFile); operationToPerformAfterOpening.apply(destinationFile); } }