package com.redhat.ceylon.eclipse.code.navigator; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.internal.resources.Resource; import org.eclipse.core.resources.IFile; import org.eclipse.jdt.internal.ui.JavaPlugin; import org.eclipse.jdt.internal.ui.navigator.JavaFileLinkHelper; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.ide.ResourceUtil; import com.redhat.ceylon.eclipse.code.editor.SourceArchiveEditorInput; import com.redhat.ceylon.eclipse.core.external.CeylonArchiveFileStore; import com.redhat.ceylon.eclipse.util.EditorUtil; public class CeylonFileLinkHelper extends JavaFileLinkHelper { @Override public void activateEditor(IWorkbenchPage page, IStructuredSelection selection) { if (selection.getFirstElement() instanceof CeylonArchiveFileStore) { IEditorInput input = EditorUtil.getEditorInput(selection.getFirstElement()); IWorkbenchPage p= JavaPlugin.getActivePage(); if (p != null) { IEditorPart editor = p.findEditor(input); if (editor != null) { page.bringToTop(editor); } } return; } super.activateEditor(page, selection); } @Override public IStructuredSelection findSelection(IEditorInput input) { if (input instanceof SourceArchiveEditorInput) { IFile file = ResourceUtil.getFile(input); IFileStore store = ((Resource) file).getStore(); if (store instanceof CeylonArchiveFileStore) { return (file != null) ? new StructuredSelection(store) : StructuredSelection.EMPTY; } return null; } return super.findSelection(input); } }