/* * 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.swt.widgets.Shell; 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.navigator.actions.KeywordDocumentationPopup; 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 KeywordDocumentationHyperlink implements RedHyperlink { private final RobotModel model; private final IRegion from; private final IProject project; private final LibrarySpecification libSpec; private final KeywordSpecification kwSpec; public KeywordDocumentationHyperlink(final IRegion from, final IProject project, final LibrarySpecification libSpec, final KeywordSpecification kwSpec) { this(RedPlugin.getModelManager().getModel(), from, project, libSpec, kwSpec); } @VisibleForTesting KeywordDocumentationHyperlink(final RobotModel model, final IRegion from, final IProject project, final LibrarySpecification libSpec, final KeywordSpecification kwSpec) { this.model = model; this.from = from; this.project = project; this.libSpec = libSpec; this.kwSpec = kwSpec; } @VisibleForTesting public LibrarySpecification getDestinationLibrarySpecification() { return libSpec; } @VisibleForTesting public KeywordSpecification getDestinationKeywordSpecification() { return kwSpec; } @Override public IRegion getHyperlinkRegion() { return from; } @Override public String getTypeLabel() { return null; } @Override public String getHyperlinkText() { return "Open Documentation"; } @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() { open(kwSpec); } protected final void open(final KeywordSpecification keywordSpecification) { final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); new KeywordDocumentationPopup(shell, keywordSpecification).open(); } }