`
javeye
  • 浏览: 329501 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在RCP中修改View的标题title

    博客分类:
  • RCP
阅读更多
在RCP中,用户自己定义的view都继承自org.eclipse.ui.part.ViewPart。在viewPart中有一个Protected的方法:
    /* (non-Javadoc)
     * @see org.eclipse.ui.part.WorkbenchPart#setPartName(java.lang.String)
     */
    protected void setPartName(String partName) {
        if (compatibilityTitleListener != null) {
            removePropertyListener(compatibilityTitleListener);
            compatibilityTitleListener = null;
        }

调用该方法就可以改变view的title值。但是,由于该方法是protected的方法,所以,该方法只能在子类中直接调用,在其他的class中想要获取的子类的引用都没有办法调用该方法,所以做了一个技巧性的改动。
在子类中自己添加一个public的方法,如下:
	public void setPartName(String name)
	{
		super.setPartName(name);
	}

一看就明白,该方法就是要将父类的protected方法在子类暴露为public的方法。
这样以后,如果在其他class里面想要动态修改view的tilte,就可以调用形如如下的语句来完成了:
		((YourView)PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().findView(YourView.ID)).setPartName("newTitle");


也是研究了好一会儿才弄明白的东西,我突然想再看看设计模式了……
分享到:
评论
1 楼 yeffzr 2013-08-23  
怎么我使用上面方法无法改变title的显示,只有在YourView下的createTopComposite方法里面使用setPartName("······")才能显示title。在其他class中调用setPartName没有反应,这是为什么呢?

相关推荐

Global site tag (gtag.js) - Google Analytics