【发布时间】:2014-09-24 08:06:10
【问题描述】:
在我的 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;
}
但这不起作用,尽管该方法正确返回true 或false。为了测试,我创建了无法更改页面的条件,然后按 Ctrl+S 并查看文件已保存,因为显示脏状态的星号消失了。
为了实现我的要求,我还需要做些什么吗?
更新:
一种可能的方法是:
@Override
public void doSave(IProgressMonitor monitor)
{
if (pageChangeEnabled)
{
// handle save action
}
}
我不喜欢此解决方案的一点是用户可能会感到困惑:保存操作看起来很活跃,但实际上并非如此。
【问题讨论】:
-
“它不起作用”是什么意思?你看到了什么行为?
-
我更新了问题以更准确地描述它。感谢您的提示。
标签: java eclipse save editor eclipse-plugin