用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留有接口。