« プロジェクト・ネーチャーの適用方法 | トップページ | 新規ビルダーの定義 »

2004.03.17

プロジェクト・ネーチャーの解除方法

プロジェクト・ネーチャーの適用方法」を紹介したが,その解除方法も気になるところだろう。ここではプロジェクト・ネーチャーの解除方法を紹介する。

プロジェクト・ネーチャーの適用は,適用したいプロジェクト・ネーチャーのIDをIProjectDescriptionオブジェクトが持っている配列に追加することで実現できた。ということは,適用されているプロジェクト・ネーチャーの解除は,解除したいプロジェクト・ネーチャーのIDをIProjectDescriptionオブジェクトが持つ配列から除外することで実現できる。理屈は至極単純である。

  String removeNatureId = "yoichiro.myPlugin.myNature";

  IProject project = ...;
  IProjectDescription description = project.getDescription();
  String[] ids = description.getNatureIds();
  for (int i = 0; i < ids.length; i++) {
    if (ids[i].equals(removeNatureId)) {
      String[] newIds = new String[ids.length - 1];
      System.arraycopy(ids, 0, newIds, 0, i);
      System.arraycopy(ids. i + 1, newIds, i, ids.length - i - 1);
      description.setNatureIds(newIds);
      project.setDescription(description);
      return; // or break;
    }
  }

最初にIProjectオブジェクトのgetDescriptionメソッドでIProjectDescriptionオブジェクトを取得し,そのgetNatureIdsメソッドを呼び出して適用されているプロジェクト・ネーチャーのIDの配列を取得している。そして,配列の中に解除したいプロジェクト・ネーチャーのIDがあるかどうかをチェックする。もし見つかったら,発見場所のインデックスを境に,その前後の要素を新しい配列にコピーして,解除したいプロジェクト・ネーチャーのIDを除外した配列を作成する。

あとは「プロジェクト・ネーチャーの適用方法」のときと同じように,IProjectDescriptionオブジェクトのsetNatureIdsメソッドで新しいIDの配列をセットし,IProjectDescriptionオブジェクトをIProjectオブジェクトのsetDescriptionメソッドに渡して,プロジェクト・ネーチャーのIDの配列の更新を反映させる。

上記の処理が完了すれば,プロジェクトからプロジェクト・ネーチャーが解除され,.projectファイルからも解除したプロジェクト・ネーチャーに関する記載が削除される。

プロジェクト・ネーチャーを解除しなければならないときって,そう多くはないはず。というか,ほぼないと思って間違いないだろう。プロジェクトの特徴が途中で変更になることってないだろうし。上記の処理は知っていて損はないが,きっと使わないもの,だと思う。

|

« プロジェクト・ネーチャーの適用方法 | トップページ | 新規ビルダーの定義 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/312392

この記事へのトラックバック一覧です: プロジェクト・ネーチャーの解除方法:

« プロジェクト・ネーチャーの適用方法 | トップページ | 新規ビルダーの定義 »