我正在开发基于GEF(图形编辑框架)并使用 Eclipse 属性视图的编辑器。我的问题是当我在这个视图中更改一个属性时,编辑器不知道这个更改并且不建议我保存。我怎样才能解决这个问题?
问问题
533 次
1 回答
0
当您在编辑器的命令堆栈之外执行编辑时,通常会发生这种情况。实际上,脏标志(您提到的保存建议)由org.eclipse.gef.commands.CommandStack
绑定到它自己的 GEF 图形编辑器控制。
假设您通过扩展 来实现属性表编辑器AdvancedPropertySection
,则必须从 中获取CommandStack
适配器IWorkbenchPart
并将其保存以供以后使用:
public class GEFAdvancedPropertySection extends AdvancedPropertySection {
public void setInput(IWorkbenchPart part, ISelection selection) {
CommandStack commandStack = (CommandStack) part.getAdapter(CommandStack.class);
if (cs != null)
page.setRootEntry(new GEFPropertySheetEntry(commandStack));
super.setInput(part, selection);
}
}
在您的PropertySheetEntry
实现中(实际上是在上面的示例中),您必须通过在已保存GEFPropertySheetEntry
的上执行来执行模型更改:org.eclipse.gef.commands.Command
CommandStack
public class GEFPropertySheetEntry extends PropertySheetEntry {
protected CommandStack commandStack;
public GEFPropertySheetEntry(CommandStack commandStack) {
this.commandStack = commandStack;
}
protected void valueChanged(PropertySheetEntry entry) {
GEFCommand command = new GEFCommand();
// here you have to configure the command
// such that it can perform
// the expected model modifications
commandStack.execute(command);
}
}
技巧是使用通过GEFCommand
执行模型修改的特定工具完成的CommandStack
,该工具绑定到原始编辑器并将其标记为污垢。
于 2013-07-24T14:23:22.600 回答