GEF编辑器和选项卡属性视图

时间:2013-06-27 13:18:36

标签: java eclipse-gef

我正在使用基于 GEF (图形编辑框架)的编辑器并使用Eclipse属性视图。我的问题是,当我在此视图中更改属性时,编辑器不知道此更改并且不建议我保存。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

当您在编辑器的命令堆栈外执行编辑时,通常会发生这种情况。实际上,脏标志(您引用的保存建议)由绑定到它自己的GEF图形编辑器的org.eclipse.gef.commands.CommandStack控制。

假设您通过扩展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来执行模型更改:< / p>

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通过{{1}}执行模型修改,{{1}}绑定到原始编辑器并将其标记为污垢。