`
liusu
  • 浏览: 171535 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Eclipse RCP资源处理的一些tips

阅读更多
Eclipse RCP资源操作的一些Tips:

取得常见图标图片

Image leftImage = PlatformUI.getWorkbench().getSharedImages().getImage(
				ISharedImages.IMG_TOOL_BACK);


另外一种巨型复杂的方法:
/**
	 * Retuns an URL based on a plugin and file path
	 * 
	 * @param plugin
	 *            Object The plugin containing the file path
	 * @param name
	 *            String The file path
	 * @return URL The URL representing the file at the specified path
	 * @throws Exception
	 */
	private static URL getPluginImageURL(Object plugin, String name)
			throws Exception {
		// try to work with 'plugin' as with OSGI BundleContext
		try {
			Class<?> bundleClass = Class.forName("org.osgi.framework.Bundle"); //$NON-NLS-1$
			Class<?> bundleContextClass = Class
					.forName("org.osgi.framework.BundleContext"); //$NON-NLS-1$
			if (bundleContextClass.isAssignableFrom(plugin.getClass())) {
				Method getBundleMethod = bundleContextClass.getMethod(
						"getBundle", new Class[0]); //$NON-NLS-1$
				Object bundle = getBundleMethod.invoke(plugin, new Object[0]);
				//
				Class<?> ipathClass = Class
						.forName("org.eclipse.core.runtime.IPath"); //$NON-NLS-1$
				Class<?> pathClass = Class
						.forName("org.eclipse.core.runtime.Path"); //$NON-NLS-1$
				Constructor<?> pathConstructor = pathClass
						.getConstructor(new Class[] { String.class });
				Object path = pathConstructor
						.newInstance(new Object[] { name });
				//
				Class<?> platformClass = Class
						.forName("org.eclipse.core.runtime.Platform"); //$NON-NLS-1$
				Method findMethod = platformClass.getMethod(
						"find", new Class[] { bundleClass, ipathClass }); //$NON-NLS-1$
				return (URL) findMethod.invoke(null, new Object[] { bundle,
						path });
			}
		} catch (Throwable e) {
			// Ignore any exceptions
		}
		// else work with 'plugin' as with usual Eclipse plugin
		{
			Class<?> pluginClass = Class
					.forName("org.eclipse.core.runtime.Plugin"); //$NON-NLS-1$
			if (pluginClass.isAssignableFrom(plugin.getClass())) {
				//
				Class<?> ipathClass = Class
						.forName("org.eclipse.core.runtime.IPath"); //$NON-NLS-1$
				Class<?> pathClass = Class
						.forName("org.eclipse.core.runtime.Path"); //$NON-NLS-1$
				Constructor<?> pathConstructor = pathClass
						.getConstructor(new Class[] { String.class });
				Object path = pathConstructor
						.newInstance(new Object[] { name });
				//
				Method findMethod = pluginClass.getMethod(
						"find", new Class[] { ipathClass }); //$NON-NLS-1$
				return (URL) findMethod.invoke(plugin, new Object[] { path });
			}
		}
		return null;
	}


文件操作:

BriterPlugin.getDefault().getBundle().getResource(SELECT_SYMBOLS_FILE_PATH).openStream())


上面的代码可以取得URL并读取文件,但是不方便写。写文件要用到另外一个类

URL url = BriterPlugin.getDefault().getBundle().getResource(EaToolParse.SELECT_SYMBOLS_FILE_PATH);
URL path = FileLocator.resolve(url);
//得到文件路径了,可以想干嘛就干嘛了
writer = new PrintWriter(new FileWriter(new File(path.getFile())));


但是还是有隐患,有可能读取出来的是jar里面得文件,写就还是不好用了。

另外一种方法:
URL url = FileLocator.find(BriterPlugin.getDefault().getBundle(),
				new Path(EaToolParse.SELECT_SYMBOLS_FILE_PATH), null);
			URL path = FileLocator.resolve(url);
			writer = new PrintWriter(new FileWriter(new File(path.getFile())));


但是对plugin得操作还是需要注意,就是plugin得导出方式,如果导出时以一个jar包形式导出的,以上的操作可能都会不好使了。

分享到:
评论

相关推荐

    Eclipse RCP 软件打包发布方法

    5. **等待完成**:在设置好JRE后,Eclipse会处理打包过程。这可能需要一些时间,因为它需要构建一个包含所有必要组件的自包含可执行文件。 6. **去除闪屏**:默认情况下,Eclipse RCP应用程序可能会有启动时的闪屏...

    Eclipse rcp深入浅出中英文版及配套代码

    Eclipse RCP,全称Eclipse Rich Client Platform,是一个基于Java的框架,用于构建桌面应用程序。这个框架由Eclipse基金会维护,是Eclipse IDE的一部分,允许开发者创建功能丰富的、可扩展的应用程序,拥有类似IDE的...

    EclipseRCP教程

    在 Eclipse RCP 中,有一些重要的术语需要了解: 1. Application:应用程序的入口,相当于 Java 系统中的 main() 方法。 2. Runtime:Eclipse RCP 的运行时环境,提供了应用程序的执行环境。 3. Workbench:Eclipse...

    eclipse rcp应用系统开发方法与实战源代码.zip

    6. **国际化和本地化**:Eclipse RCP支持多语言环境,开发者需要了解如何实现应用程序的国际化和本地化,包括资源文件的处理和语言切换机制。 7. **源代码实践**:压缩包中的源代码提供了实际的开发示例,通过分析...

    eclipse RCP Plug-in开发自学教程.pdf

    eclipse RCP Plug-in开发自学教程 eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法...

    eclipse RCP mp3工程

    7. **学习资源**:这个项目对于想要学习Eclipse RCP开发的初学者来说是一个宝贵的实例,他们可以从源代码中学习如何结合Eclipse RCP和MP3处理技术。 综上所述,"eclipse RCP mp3工程"不仅是一个实用的音频处理应用...

    Eclipse RCP.pdf清晰版

    ### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    使用Eclipse的内置调试工具,可以方便地对RCP应用进行调试和测试,包括UI布局、事件处理以及业务逻辑。 综上所述,Eclipse RCP 3.6.0的中文语言包对于在中国的开发者来说,是构建和调试Eclipse插件或RCP应用不可或...

    Eclipse RCP培训.zip

    Eclipse Rich Client Platform(RCP)是Eclipse框架下的一个核心组成部分,用于构建桌面应用..."Eclipse RCP培训.zip"中的内容可能涵盖了这些方面,包括理论讲解、代码示例、练习项目等,是学习Eclipse RCP的好资源。

    Eclipse Rcp

    Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...

    EclipseRcp 例子程序

    Eclipse RCP(Rich Client Platform)是一个开源框架,由Eclipse基金会开发,用于构建桌面应用程序。这个框架基于Java,提供了一套完整的工具集,包括插件系统、工作台管理、视图、编辑器、透视图等,使得开发者可以...

    Eclipse RCP 插件开发指南

    编辑器是在 Eclipse RCP 中处理文件的主要方式。编辑器提供了一种可视化的方式来显示和编辑文件内容。除了基本文本编辑器之外,还可以创建特定类型的编辑器,如图像编辑器、模型编辑器等。 ##### Help 帮助系统是 ...

    documents about Eclipse RCP

    通过这些资源,开发者不仅可以了解Eclipse RCP的基本原理,还能获得实践经验,掌握如何创建和维护功能丰富的桌面应用。对于希望深入Eclipse RCP开发的人员来说,这是一份非常有价值的学习资料。

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...

    Eclipse RCP开发详解

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序,它基于Java语言并利用了Eclipse IDE的核心技术。Eclipse RCP允许开发者创建功能丰富的、可扩展的应用程序,这些应用程序拥有与Eclipse...

    Eclipse RCP与Spring OSGi技术详解与最佳实践

    《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自执笔,并得到了Eclipse官方技术社区的强烈推荐,权威性毋庸置疑!内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的...

    Eclipse Rcp comon Navigator demo

    Common Navigator是Eclipse RCP中的一个重要组件,它提供了一种通用的资源浏览和管理界面。在本"Common Navigator demo"中,我们将深入探讨如何利用Eclipse RCP创建一个基于Common Navigator的简单应用,并了解如何...

    Eclipse RCP详细教程

    Actions是Eclipse RCP中用于处理用户交互的核心组件。它们可以绑定到菜单项、工具栏按钮或其他UI元素上。通过Actions,可以方便地响应用户的操作,执行相应的任务。 ##### 4.2. 通过编码添加 Actions可以通过编码...

    ECLIPSE RCP项目源程序

    这个压缩包中的“ECLIPSE RCP项目源程序”包含了使用Eclipse RCP开发的一个项目的完整源代码,并且有中文注释,这对于初学者或有经验的开发者来说都是一个宝贵的资源。 Eclipse RCP的核心概念主要包括以下几个方面...

    Eclipse RCP+Spring建胖客户端Web程序

    Eclipse RCP负责处理菜单、工具栏、视图等界面元素的实现,让开发者可以更加专注于核心业务逻辑的开发。 #### 2. 为什么使用Eclipse RCP? - **广泛的应用支持**:许多知名应用都采用了Eclipse RCP作为其基础框架...

Global site tag (gtag.js) - Google Analytics