Eclipseプラグインを作ってみよう!

第11回 YAMLファイルの読み書き

この記事を読むのに必要な時間:およそ 4.5 分

YAMLファイルの読み込み

続いてYAMLファイルの読み込みを実装します。読み込んだデータはテーブルビューアーにセットするので,テーブルビューアーの生成が完了したあとに行うことにします。

FieldsMasterSectionPartクラスのcreateTable()メソッドとsetFieldTableFromYAMLFile()メソッド

public class FieldsMasterSectionPart extends SectionPart implements IPartSelectionListener {
    ...
    private void createTable(Composite composite) {
        ...
        fViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            ...
        });

        setFieldTableFromYAMLFile();
    }

    private void setFieldTableFromYAMLFile() {
        assert (!(getManagedForm().getInput() instanceof IFileEditorInput));

        BufferedInputStream bufferedIn = null;
        ByteArrayOutputStream byteOut = null;
        try {
            bufferedIn = new BufferedInputStream(
                    ((IFileEditorInput) getManagedForm().getInput()).getFile()
                        .getContents(true));
            byteOut = new ByteArrayOutputStream();
            int read = 0;
            while ((read = bufferedIn.read()) != -1) {
                byteOut.write(read);
            }

            List<Map<String, Object>> fieldList = (List<Map<String, Object>>) Yaml.load(byteOut.toString("UTF-8"));
            for (Map<String, Object> fieldMap : fieldList) {
                fViewer.add(getField(fieldMap));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (CoreException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedIn != null) {
                    bufferedIn.close();
                }
            } catch (IOException ioe) {
            }
            try {
                if (byteOut != null) {
                    byteOut.close();
                }
            } catch (IOException ioe) {
            }
        }
    }
}

完成

これでフォームデザイナーはひととおり完成です。ウィジェットの生成,データの連携,外部ライブラリーの使用,ファイルへの読み書きといった通常のアプリケーションでもよく見かける機能を解説してきましたが,いかがだったでしょうか。第2回でも解説したようにEclipse Formsはリッチクライアントの実装にも利用可能な,応用範囲の広いフレームワークです。今回の記事がEclipse Formsの理解の一助となれば幸いです。

完成したフォームデザイナー

完成したフォームデザイナー

おわりに

次回は,本連載のまとめとして有用なプラグインや情報源となるサイト・書籍をご紹介します。

著者プロフィール

松藤秀治(まつふじひではる)

Piece Frameworkのプログラマー。担当はEclipseのプラグインとして開発されているPiece Frameworkの統合開発環境Piece_IDE。2007年5月に株式会社アイテマンを設立。