获得当前激活状态的Iproject

/**
	 * 获得当前工程
	 * @return
	 */
	public static IProject getActiveProject() {
		IWorkbenchPage page = getWorkbenchPage();

		if (page == null) {
			return null;
		}

		IWorkbenchPart part = page.getActivePart();
		Object adaptable = null;

		if ((part instanceof IEditorPart)) {
			IEditorPart editorPart = (IEditorPart) part;

			IEditorInput input = editorPart.getEditorInput();
			adaptable = input.getAdapter(IFile.class);
		} else {
			IViewPart viewPart = (IViewPart) part;

			adaptable = viewPart.getAdapter(IResource.class);
			if (adaptable == null) {
				ISelection selection = page.getSelection();

				if ((isValidSelection(selection)) && ((selection instanceof IStructuredSelection))) {
					IStructuredSelection newSelection = (IStructuredSelection) selection;

					Object[] objects = newSelection.toArray();
					if (!ArrayUtils.isEmpty(objects)) {
						for (int i = 0; i < objects.length; i++) {
							Object object = objects;
							adaptable = AdapterUtil.getAdapter(object, IResource.class);
							if (adaptable != null) {
								break;
							}

						}

					}

				}

			}

		}

		if (adaptable == null) {
			IEditorPart editor = getActiveEditor();
			if (editor == null)
				return null;
			IEditorInput input = editor.getEditorInput();
			adaptable = input.getAdapter(IFile.class);
		}

		if ((adaptable instanceof IResource)) {
			IResource resource = (IResource) adaptable;
			IProject project = resource.getProject();
			return project;
		}

		return null;
	}

	public static boolean isValidSelection(ISelection selection) {
		return (selection != null) && (!selection.isEmpty());
	}

/**
 * 适配器工具类
 * 
 * @author Ming.He
 * 
 */
public class AdapterUtil {
	public static Object getAdapter(Object r_Element, Class r_AdapterType) {
		if (r_Element == null) {
			return null;
		}
		if ((r_Element instanceof IAdaptable)) {
			return ((IAdaptable) r_Element).getAdapter(r_AdapterType);
		}

		return Platform.getAdapterManager().getAdapter(r_Element, r_AdapterType);
	}
}

你可能感兴趣的:(project)