package org.maziarz.yiiclipse.hyperlinks;
import java.io.File;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
public class EFSResourceHyperlink implements IHyperlink {
private IRegion fRegion;
private IPath fLocalPath;
public EFSResourceHyperlink(Region region, IPath lp) {
Assert.isNotNull(region);
Assert.isNotNull(lp);
this.fRegion = region;
this.fLocalPath = lp;
}
@Override
public IRegion getHyperlinkRegion() {
return fRegion;
}
@Override
public String getTypeLabel() {
return "Open Declaration";
}
@Override
public String getHyperlinkText() {
return "Open declaration (hyperlink text)";
}
@Override
public void open() {
File fileToOpen = this.fLocalPath.toFile();
if (fileToOpen.exists() && fileToOpen.isFile()) {
IFileStore fileStore = EFS.getLocalFileSystem().getStore(fileToOpen.toURI());
IFile file = (IFile)fileStore.getAdapter(IFile.class);
System.out.println("File: "+file);
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
try {
IDE.openEditorOnFileStore(page, fileStore);
} catch (PartInitException e) {
}
}
}
}