1

現在、私はに取り組んでRCP applicationview partます。アプリケーションでは、ユーザーは同じの複数のインスタンスを開くことができますview part。でビューパーツクローズ操作ができmenu selectionます。しかし、私は「X」、つまりタブを閉じる操作を処理することに気づいていません。

IPartListenerビューパーツオブジェクトにオブジェクトを追加してみましたが(このリンクを参照)、そのpartClosed()メソッドで2つの問題に直面しています。

  1. の現在のインスタンスを取得できませんview part object
  2. このpartClosed()メソッドはタブを閉じた後にのみ呼び出されるため、タブを閉じるための確認を表示できません。

上記の2つの質問を解決するには、どのようなアプローチを使用する必要がありますか。

どんな助けでも大歓迎です。

よろしくお願いします、

マンダー

4

2 に答える 2

1

エディターを閉じるときに確認のみを表示したい場合は、実装ISaveablePart2とそのメソッドを実行してみませんかpromptToSaveOnClose();

例:

@Override
public int promptToSaveOnClose() {
    boolean canClose = // Show dialog here and return a boolean based on the users input
    if (canClose) {
        return ISaveablePart2.NO;
    } else {
        return ISaveablePart2.CANCEL;
    }

    return 0;
}
于 2012-11-26T07:59:11.320 に答える
1

ISaveablePart2あなたはあなたのへのインターフェースを実装することを検討するかもしれませんViewPart。このインターフェースは、パーツを閉じる必要があるかどうかをユーザーに確認する役割を果たします。さらに、保存されていないデータをどう処理するかを決定します。

メソッドのカスタムダイアログでビューを閉じる必要がある場合は、ユーザーをプロムすることができますpromptToSaveOnClose()

@Override
public boolean isDirty() {
    return true;
}

@Override
public int promptToSaveOnClose() {
    boolean close = MessageDialog.openConfirm(
            Display.getCurrent().getActiveShell(), "Close?", "Really?");

    if(close)
        return YES;
    return CANCEL;
}

Eclispe API:ISaveablePart2

于 2012-11-26T08:02:35.503 に答える