用GMF生成的图形编辑器,工具栏名字叫Palette,最近有需求要把它改掉,并且能够国际化。看了半天源代码在FlyoutPaletteComposite$TitleCanvas类里找到了title的获取方式:
private void provideAccSupport() { getAccessible().addAccessibleListener(new AccessibleAdapter() { public void getDescription(AccessibleEvent e) { e.result = PaletteMessages.ACC_DESC_PALETTE_TITLE; } public void getHelp(AccessibleEvent e) { getDescription(e); } public void getName(AccessibleEvent e) { e.result = GEFMessages.Palette_Label; } }); getAccessible().addAccessibleControlListener( new AccessibleControlAdapter() { public void getRole(AccessibleControlEvent e) { e.detail = ACC.ROLE_LABEL; } }); }
还好GEFMessages.Palette_Label不是final类型的,这样我们只需在editor的构造函数里把它赋予新的值就可以。真相不明白GMF为什么不给修改Palette的title留有接口。