This is what I tried, but it failed.And it alerted that 'org.eclipse .core .internal.File cannot be cast to org.eclipse.core.resource.IProject'.
public void runDefaultAction(IStructuredSelection selection) {
Object element = selection.getFirstElement();
if (element instanceof IFile) {
openFileAction.selectionChanged(selection);
openFileAction.run();
String selectedPathString = ((IFile) element).getFullPath().toString();
System.out.println(selectedPathString);
//get project absolute path
ISelectionService service = navigator.getSite().getWorkbenchWindow()
.getSelectionService();
IStructuredSelection selection1 = (IStructuredSelection) service
.getSelection("BIT_DEC.myNavigator");
IProject iproject = (IProject) selection1.getFirstElement();
String real_file_path = iproject.getLocation().toString();
System.out.println(real_file_path);
.....