top / index / prev / next / target / source

2005-07-30 diary: Java: Eclipse RCP: RCP Mail Templateにダブルクリックイベント処理を追加するサンプル

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

Java: Eclipse RCP: RCP Mail Templateにダブルクリックイベント処理を追加するサンプル

Eclipse 3.1に付いてくる新Wizard 「RCP Mail Template」にダブルクリックイベント処理を追加するサンプルを作成しました。

Eclipse RCP: RCP Mail Templateにダブルクリックイベント処理を追加するサンプル

Eclipse 3.1に付属する RCPウィザード 「RCP Mail Template」に感動しました。こんなものが たったこれだけの行数で実現できるのですね。Eclipse RCPの凄さに圧倒されます。一点 この RCPウィザードが生成するテンプレート・サンプルには ダブルクリックイベント処理が付いていません。ダブルクリックイベント処理は、SWTやSwingのツリー処理に詳しくない人にとっては難易度が高いものと思われます。そのため、ダブルクリックイベント処理を追加するためのシンプルなサンプルを作成しました。 【RCP Mail Template】 の NavigationView.java

        // ダブルクリックでツリーを開いたり閉じたり、あるいはノードを開くためのサンプル。
        // 【RCP Mail Template】 の NavigationView.java の createPartControl メソッド
        viewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(DoubleClickEvent event) {
                System.out.println("ダブルクリックが発生しました:" + event.toString());
                Object src = event.getSource();
                System.out.println("イベントのSourceを利用して展開処理を実施します:"
                        + src.toString());
                if (src instanceof TreeViewer) {
                    TreeViewer treeviewer = (TreeViewer) src;
                    StructuredSelection selection = (StructuredSelection) treeviewer
                            .getSelection();
                    Object first = selection.getFirstElement();
                    if (first instanceof TreeParent) {
                        TreeParent treeparent = (TreeParent) first;
                        System.out.println("フォルダオブジェクト:フォルダ"
                                + treeparent.toString() + "の開け閉めを行います:");
                        if (viewer.getExpandedState(treeparent)) {
                            viewer.collapseToLevel(treeparent, 1);
                        } else {
                            viewer.expandToLevel(treeparent, 1);
                        }
                    } else {
                        System.out.println("ファイルオブジェクト: ここで View "
                                + first.toString() + " を表示する処理を行います");
                        try {
                            getSite().getWorkbenchWindow().getActivePage()
                                    .showView(View.ID, first.toString(),
                                            IWorkbenchPage.VIEW_ACTIVATE);
                        } catch (PartInitException ex) {
                            ex.printStackTrace();
                        }
                    }

                }
            }
        });
        // 【RCP Mail Template】 の NavigationView.java の createPartControl メソッド

これで、ツリー部分のダブルクリックによって ノードの開閉やビューのオープンが実現可能になります。 RCP Mail Templateの他の部分に手を入れると、その他のツリー関連処理についても、どんどん機能を追加することが出来ます。このRCP Mail Templateサンプルは、とても素晴らしいですね。比較的難しめなツリー関連処理について、とても入門しやすくなっています。そして、これが RCPのサンプルであるというのも、意義深いところです。ウィザードで質問に淡々と答えていくだけで こんな素晴らしい RCPアプリケーションが開発できるのですから。

関連するリソース

関連する日記

世間のニュースから


この日記について