package com.hundsun.ares.studio.ui; import org.eclipse.core.resources.IFile; 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.IFileEditorInput; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.navigator.ILinkHelper; import org.eclipse.ui.part.FileEditorInput; import com.hundsun.ares.studio.core.ARESCore; import com.hundsun.ares.studio.core.IARESElement; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.internal.core.ARESResource; import com.hundsun.ares.studio.internal.core.ArchiveARESResource; public class LinkHelper implements ILinkHelper { public void activateEditor(IWorkbenchPage aPage, IStructuredSelection aSelection) { if (aSelection == null || aSelection.isEmpty()) return; Object obj = aSelection.getFirstElement(); if (obj instanceof IARESResource) { IEditorInput input = null; if (obj instanceof ArchiveARESResource) { input = new ARESResourceEditorInput((IARESResource) obj); } else if (obj instanceof ARESResource) { input = new FileEditorInput((IFile) ((IARESResource) obj).getResource()); } IEditorPart part = aPage.findEditor(input); if (part != null) { aPage.bringToTop(part); } } } public IStructuredSelection findSelection(IEditorInput anInput) { IARESResource res = null; if (anInput instanceof IFileEditorInput) { IFile file = ((IFileEditorInput) anInput).getFile(); IARESElement ares = (IARESElement) ARESCore.create(file); if (ares instanceof IARESResource && ares.exists()) { res = (IARESResource) ares; } } else if (anInput instanceof ARESResourceEditorInput) { ARESResourceEditorInput input = (ARESResourceEditorInput) anInput; res = input.getARESResource(); } if (res != null) { return new StructuredSelection(res); } return null; } }