gpt4 book ai didi

java - Eclipse编辑器插件: isSaveAsAllowed

转载 作者:行者123 更新时间:2023-12-01 12:29:54 25 4
gpt4 key购买 nike

在开发包含多页面编辑器的 Eclipse 插件时,我遇到了方法 isSaveEnabled() 的问题,该方法应该被覆盖,以便禁用或启用保存的可能性打开的文件。我禁止在某些条件下更改页面,因此我有相应的字段和方法来实现这一点:

public class ARTEditor
extends FormEditor
implements IResourceChangeListener
{
private boolean pageChangeEnabled;

@Override
protected void pageChange(int newPageIndex)
{
if (pageChangeEnabled)
{
super.pageChange(newPageIndex);
switch (newPageIndex)
{
// handling the change of the active page
}
}
}

// getter + setter for pageChangeEnabled used by other components
}

现在我想在相同条件下禁用/启用保存操作。我认为覆盖上述方法就足够了:

@Override
public boolean isSaveAsAllowed()
{
return pageChangeEnabled;
}

但这不起作用,尽管该方法正确返回 truefalse。为了进行测试,我创建了无法更改页面的条件,然后按 Ctrl+S 并看到文件已保存,因为显示脏状态的星号消失了。

我还需要做其他事情来实现我的要求吗?

更新:

一种可能的方法是:

@Override
public void doSave(IProgressMonitor monitor)
{
if (pageChangeEnabled)
{
// handle save action
}
}

我不喜欢这个解决方案的是,用户可能会感到困惑:保存操作看起来处于 Activity 状态,但实际上并非如此。

最佳答案

isSaveAsAllowed 方法仅用于确定是否可以使用“文件 > 另存为...”。它不用于“文件 > 保存”。

如果您不想允许“文件>保存”,您可以覆盖:

public boolean isDirty()

并防止编辑报告它是脏的。这也将阻止显示表明编辑器脏的“*”。

当您更改 pageChangeEnabled 标志时,您可能需要调用 editorDirtyStateChanged(),以使编辑器再次调用 isDirty

您还可以重写doSave,在这种情况下,您应该在进度监视器上调用setCanceled。您可能还想显示一个 MessageDialog 来解释为什么不进行保存。

关于java - Eclipse编辑器插件: isSaveAsAllowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26011696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com