/* * 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.IProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.IRegion; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.robotframework.ide.eclipse.main.plugin.RedImages; import org.robotframework.ide.eclipse.main.plugin.RedPlugin; import org.robotframework.ide.eclipse.main.plugin.model.RobotModel; import org.robotframework.ide.eclipse.main.plugin.project.library.KeywordSpecification; import org.robotframework.ide.eclipse.main.plugin.project.library.LibrarySpecification; import org.robotframework.ide.eclipse.main.plugin.project.library.SourceOpeningSupport; import com.google.common.annotations.VisibleForTesting; /** * @author Michal Anglart * */ public class KeywordInLibrarySourceHyperlink implements RedHyperlink { private final RobotModel model; private final IRegion source; private final IProject project; private final LibrarySpecification libSpec; private final KeywordSpecification kwSpec; public KeywordInLibrarySourceHyperlink(final IRegion from, final IProject project, final LibrarySpecification libSpec, final KeywordSpecification kwSpec) { this(RedPlugin.getModelManager().getModel(), from, project, libSpec, kwSpec); } @VisibleForTesting KeywordInLibrarySourceHyperlink(final RobotModel model, final IRegion from, final IProject project, final LibrarySpecification libSpec, final KeywordSpecification kwSpec) { this.model = model; this.source = from; this.project = project; this.libSpec = libSpec; this.kwSpec = kwSpec; } @VisibleForTesting public LibrarySpecification getDestinationSpecification() { return libSpec; } @Override public IRegion getHyperlinkRegion() { return source; } @Override public String getTypeLabel() { return null; } @Override public String getHyperlinkText() { return "Open Definition " + elementName(); } @Override public String elementName() { return kwSpec.getName(); } @Override public String getLabelForCompoundHyperlinksDialog() { return libSpec.getName(); } @Override public String additionalLabelDecoration() { return "[" + SourceOpeningSupport.extractLibraryLocation(model, project, libSpec) + "]"; } @Override public ImageDescriptor getImage() { return RedImages.getLibraryImage(); } @Override public void open() { final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); SourceOpeningSupport.open(page, model, project, libSpec, kwSpec); } }