Eclipse应用如何获得runtime project的路径

最近基于gef/emf开发一个图形化工具,用于设计手机屏幕。在加载文件时需要知道文件与之对应的project路径用于和模型相对路径拼接形成绝对路径来加载图片资源。因为ImageData的构造函数接受图片的绝对路径,ImageData(String filename)(底层基于FileInputStream实现,FileInputStream构造函数接受绝对路径)。

 

最开始用IWorkbench.getActiveWorkbenchWindow().getActivePage().getActiveEditor()拿到当前图形编辑器实例在通过编辑器对象拿到IFileEditorInput最后可以拿到project路径,但是有的时候加载图形编辑文件是,编辑器还没有加载完,经常返回null,所以刚打开文件时所有图片文件不能加载。如何解决这个问题呢。

 

因为我的gef底层模型用的是emf所以在EditPart中可以通过gef对应的EObject模型拿到编辑的模型文件的路径,就可以拿到project的路径了,代码如下:

public static String getCurrentProjectPath(EObject eobj) {
		if(eobj == null) {
			return null;
		}
		org.eclipse.emf.common.util.URI uri = eobj.eResource().getURI();
		if(uri == null) 
			return null;
		String path = uri.toString();
		IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(path.split("/")[2]);
		return proj.getLocation().toString();
	}

用这个方法不用在编辑器加载完成之前就可以拿到编辑的文件路径和当前的runtime project路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值