1

紹介ページ (ようこそページ) を追加した RCP アプリケーションがあります。これは、IIntroPart を使用して実装されます。したがって、私のものは xml 指向のウェルカム ページではありません。

問題: アプリケーションを開始すると、ウェルカム ページが完全に表示されます。しかし、ウェルカム ページがまだ開いている (表示されている) ときに、アプリケーションでパースペクティブを開こうとすると、ウェルカム ページが (Eclipse IDE のように) 右に移動せず、選択したパースペクティブのためのスペースが作られません。

そのため、パースペクティブを選択した後でも、パースペクティブは表示されず、ウェルカム ページがまだワークベンチ領域全体を占めています。選択したパースペクティブはウェルカム ページの後ろに隠れていないことに注意してください。しかし、選択したパースペクティブはパースペクティブ ショートカットで更新されています!

再起動時に (メタデータをクリアした後)、ウェルカム ページを手動で閉じてからパースペクティブを開こうとすると、パースペクティブが正常に開きます。

ウェルカム ページ (表示されている場合) が原因で、選択したパースペクティブがワークベンチで開かれません。

誰でもこの問題を解決するのを手伝ってもらえますか? これは、Eclipse IDE でのウェルカム ページの動作と同じように動作する必要があります。つまり、ウェルカム ページがまだ開いているときにパースペクティブが開いている場合は、ウェルカム ページが右側に移動してスペクティブ用のスペースが作られるため、両方 (選択したパースペクティブとウェルカム ページ) が表示されます。

アップデート:

問題のいくつかの進歩。ウェルカム ページ (イントロ部分) がまだ開いているときに、開くパースペクティブを選択すると (「ウィンドウ -> パースペクティブを開く -> MyPerspective」)、ウェルカム ページを閉じることができます (これは、パーツ リスナーをようこそページ)。しかし、空の領域が表示され、パースペクティブは表示されません。ただし、選択したパースペクティブは、アプリケーションのパースペクティブ ショートカット バーで更新されています。

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

4

1 に答える 1

1

パースペクティブ リスナーを追加し、ウェルカム ページを最小化します。以下のコードを Activator の start メソッドに入れます。

    final IWorkbench workbench = PlatformUI.getWorkbench();
    workbench.getDisplay().asyncExec(new Runnable() {
        public void run() {
                workbench.getActiveWorkbenchWindow().addPerspectiveListener(new IPerspectiveListener() {

                    public void perspectiveActivated(IWorkbenchPage arg0, IPerspectiveDescriptor arg1) {
                        // Nothing to do

                    }

                    public void perspectiveChanged(IWorkbenchPage arg0, IPerspectiveDescriptor arg1, String arg2) {

                        // Fix for bug number 8028
                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                        IViewPart introView = page.findView("org.eclipse.ui.internal.introview");//$NON-NLS-1$
                        if (introView != null && page.getReference(introView) != null) {
                            int currentState = page.getPartState(page.getReference(introView));
                            if (currentState != IWorkbenchPage.STATE_MINIMIZED) {
                                page.setPartState(page.getReference(introView), IWorkbenchPage.STATE_MINIMIZED);
                            }
                        }

                    }
                });                
        }
    });
于 2013-10-08T11:23:11.517 に答える