- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在开发包含多页面编辑器的 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
}
}
我不喜欢这个解决方案的是,用户可能会感到困惑:保存操作看起来处于 Activity 状态,但实际上并非如此。
最佳答案
isSaveAsAllowed
方法仅用于确定是否可以使用“文件 > 另存为...”。它不用于“文件 > 保存”。
如果您不想允许“文件>保存”,您可以覆盖:
public boolean isDirty()
并防止编辑报告它是脏的。这也将阻止显示表明编辑器脏的“*”。
当您更改 pageChangeEnabled
标志时,您可能需要调用 editorDirtyStateChanged()
,以使编辑器再次调用 isDirty
。
您还可以重写doSave
,在这种情况下,您应该在进度监视器上调用setCanceled
。您可能还想显示一个 MessageDialog
来解释为什么不进行保存。
关于java - Eclipse编辑器插件: isSaveAsAllowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26011696/
在开发包含多页面编辑器的 Eclipse 插件时,我遇到了方法 isSaveEnabled() 的问题,该方法应该被覆盖,以便禁用或启用保存的可能性打开的文件。我禁止在某些条件下更改页面,因此我有相应
我是一名优秀的程序员,十分优秀!