package org.bundlemaker.core.ui.artifact.cnf; import org.bundlemaker.core.analysis.IBundleMakerArtifact; import org.bundlemaker.core.analysis.IResourceArtifact; import org.bundlemaker.core.ui.artifact.tree.EditorHelper; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.navigator.ILinkHelper; /** * <p> * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class BundleMakerFileLinkHelper implements ILinkHelper { @Override public void activateEditor(IWorkbenchPage page, IStructuredSelection selection) { // return immediately if the selection is null or empty if (selection == null || selection.isEmpty()) return; // get the first element Object element = selection.getFirstElement(); // if (element instanceof IBundleMakerArtifact) { // IBundleMakerArtifact bundleMakerArtifact = (IBundleMakerArtifact) element; // IResourceArtifact resourceArtifact = bundleMakerArtifact instanceof IResourceArtifact ? (IResourceArtifact) bundleMakerArtifact : (IResourceArtifact) bundleMakerArtifact.getParent(IResourceArtifact.class); // if (resourceArtifact == null) { return; } // IEditorReference editorReference = getEditorReference(page, resourceArtifact); // if (editorReference != null) { // EditorHelper.openArtifactInEditor(resourceArtifact); } } } @Override public IStructuredSelection findSelection(IEditorInput input) { // if (input instanceof ResourceArtifactEditorInput) { ResourceArtifactEditorInput bmClassFileEditorInput = (ResourceArtifactEditorInput) input; IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); if (page != null) { // IViewPart view = page.findView(IPageLayout.ID_PROJECT_EXPLORER); // if (view != null && view instanceof CommonNavigator) { return new StructuredSelection(bmClassFileEditorInput.getResourceArtifact()); } } } return StructuredSelection.EMPTY; } /** * <p> * </p> */ private IEditorReference getEditorReference(IWorkbenchPage page, IResourceArtifact resourceArtifact) { try { // IEditorPart actEditor = page.getActiveEditor(); for (IEditorReference iEditorReference : page.getEditorReferences()) { // if (iEditorReference.getEditorInput() instanceof ResourceArtifactEditorInput) { // ResourceArtifactEditorInput input = (ResourceArtifactEditorInput) iEditorReference.getEditorInput(); // if (input.getResourceArtifact().equals(resourceArtifact)) { return iEditorReference; } } } } catch (PartInitException e) { // return false return null; } // return false return null; } }