簡體   English   中英

Eclipse編輯器插件:isSaveAsAllowed

[英]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;
}

但這不起作用,盡管該方法正確返回truefalse 為了進行測試,我創建了無法更改頁面的條件,然后按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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM