package jqian.slicer.plugin;
import java.io.File;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.*;
import org.eclipse.ui.*;
import org.eclipse.ui.part.*;
public class WorkbenchHelper {
/**
* Find a workbench page by the given id
* @return null if nothing found
*/
public static IWorkbenchPage findViewPage(String viewId){
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
for(int i=0; i<windows.length; i++){
IWorkbenchPage[] pages = windows[i].getPages();
for(int k=0;k<pages.length;k++){
IViewPart view = pages[k].findView(viewId);
if(view!=null){
return pages[i];
}
}
}
return null;
}
/** Open a workbench page, if not exist, just create it. */
public static IWorkbenchPage openViewPage(String id){
IWorkbenchPage page = findViewPage(id);
//If not aready docked in a WorkbenchPage
if(page==null){
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
page = window.getActivePage();
try{
page.showView(id);
}catch(PartInitException e){
//e.printStackTrace();
}
}
return page;
}
public static IViewPart openView(String id){
IWorkbenchPage page = openViewPage(id);
IViewPart view = page.findView(id);
page.activate(view);
return view;
}
public static Shell getActiveShell(){
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
return window.getShell();
}
public static Shell getActiveJDTEditorShell(){
IWorkbenchPage page = WorkbenchHelper.openViewPage(ID.JDT_VIEW_ID);
ITextEditor editor = (ITextEditor)page.getActiveEditor();
return editor.getSite().getShell();
}
public static IProject getCurrentProject(){
IFile file = getCurrentFile();
return file.getProject();
}
public static IFile getCurrentFile(){
try{
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
IEditorPart editor = page.getActiveEditor();
FileEditorInput edInput = (FileEditorInput)(editor.getEditorInput());
return edInput.getFile();
}
catch(Exception e){
return null;
}
}
public static IFile getIFile(IProject project,File file){
try {
String prjPath = project.getLocation().toString();
//String path = file.getCanonicalPath();
String path = file.getAbsolutePath();
String relevantPath = path.substring(prjPath.length());
IFile ifile = project.getFile(relevantPath);
ifile.refreshLocal(1, null);
return ifile;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static File getFile(IFile ifile){
IPath path = ifile.getLocation();
//IPath path = ifile.getFullPath();
return path.toFile();
}
}