[英]Eclipse Editor Plugin: isSaveAsAllowed
在我的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並看到文件已保存,因為顯示臟狀態的星號消失了。
我需要做其他事情來實現我的要求嗎?
UPD:
一種可能的方法是:
@Override
public void doSave(IProgressMonitor monitor)
{
if (pageChangeEnabled)
{
// handle save action
}
}
我對該解決方案不滿意的是,用戶可能會感到困惑:保存動作看起來很活躍,但實際上卻並非如此。
isSaveAsAllowed
方法僅用於確定是否可以使用“文件>另存為...”。 它不用於“文件>保存”。
如果您不想允許“文件>保存”,則可以覆蓋:
public boolean isDirty()
並防止編輯器報告其臟了。 這也將防止顯示“ *”表示編輯器臟了。
您可能需要調用editorDirtyStateChanged()
當您更改pageChangeEnabled
標志獲得編輯打電話isDirty
一次。
您也可以覆蓋doSave
,在這種情況下,應在進度監視器上調用setCanceled
。 您可能還想顯示一個MessageDialog
解釋為什么不進行保存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.