我们在进行Eclipse插件开发过程中,可能经常会需要修改Eclipse的标题,把Title改为自己公司的产品名称,我在网上查找了一些资料(“小小凉粉”在Eclipse社区提问的回复),加上自己的实践总结出以下几种方法:
1、可以通过获取主程序的Shell来更改程序标题。
public static void changeAppTitle(String newTitle) {
Display display = Display.getDefault();
if (display != null) {
Shell shells[] = display.getShells();
for (int i = 0; i <=shells.length();i++){
Object data = shells .getData();
// 检查shell是否为主程序的 shell:
if (data instanceof IWorkbenchWindow) {
// 更改主程序的标题文字
shells .setText(newTitle);
break;
}
}
}
}
2、通过重载WorkbenchWindowAdvisor 来实现
public class MyWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor implements IPropertyChangeListener {
...
@Override
public void preWindowOpen() {
super.preWindowOpen();
_configurer = getWindowConfigurer();
setTitle();
PreferencesImpl.store().addPropertyChangeListener(this);
}
public void propertyChange(final PropertyChangeEvent event) {
if (event.getProperty().equals(MY_PREFERENCE_KEY)) {
if (!event.getOldValue().equals(event.getNewValue())) {
setTitle();
}
}
}
protected void setTitle() {
final String title = computeNewTitleHoweverYouLike();
_configurer.setTitle(title);
}
protected IWorkbenchWindowConfigurer _configurer;
}
3、通过修改Eclipse源代码来实现
其实最简单的方法就是直接修改源代码,我把Eclipse3.1.2的org.eclipse.ui.ide_3.1.1.jar源码进行了修改,只需修改org.eclipse.ui.internal.ide包中IDEWorkbenchWindowAdvisor.java类,在computeTitle()方法内增加一句话就OK了!
private String computeTitle() {
..........
// 在返回标题名称之前,进行title的自定义设置
title = "随便你取什么名字:)";
return title;
}
大家如果需要动态改变标题,请看“小小凉粉”的《动态改变RCP应用程序的标题》一文,地址为:
http://www.blogjava.net/dearwolf/archive/2006/12/13/87554.html