JAR ファイルを作る その 4

ついでなので、他にどんなダイアログがあるのか調べていきます。

org.eclipse.ui.dialogs には次のようなクラスが定義されています (abstract、depricated は除外してあります)。

  • CheckedTreeSelectionDialog
  • ContainerSelectionDialog
  • ElementListSelectionDialog
  • ElementTreeSelectionDialog
  • ListDialog
  • ListSelectionDialog
  • MarkerResolutionSelectionDialog
  • NewFolderDialog
  • ProjectLocationMoveDialog
  • ProjectLocationSelectionDialog
  • ResourceListSelectionDialog
  • ResourceSelectionDialog
  • SaveAsDialog
  • TwoPaneElementSelector
  • TypeFilteringDialog

これだけあると調べるのもたいへん。1 つずつやっていきましょう。

で CheckedTreeSelectionDialog クラスからやろうと思って run メソッドを次のようにしました。

        public void run(IAction action) {
            IWorkbench workbench = WrpePlugin.getDefault().getWorkbench();
            IWorkbenchWindow workBenchWindow = workbench.getActiveWorkbenchWindow();
            Shell shell =  workBenchWindow.getShell();
            ILabelProvider lProvider= new LabelProvider();
            ITreeContentProvider tProvider = new PreferenceContentProvider();
            CheckedTreeSelectionDialog dialog= new CheckedTreeSelectionDialog(shell, lProvider, tProvider);
            System.out.println(dialog.open());
        }

ところがのっけから NullPointerException。どうやら、CheckedTreeSlectionDialog クラスは setInput メソッドでツリーを渡さなければいけないようです。ところが、この引数の型が Object クラス。これじゃ、この先しらべられないじゃないか。

ということで、CheckedTreeSelectionDailog はとばします。こういう使うのに制約の多いクラスはイヤですね。まぁ、いいや。次。

ContainerSelectionDialog クラスは昨日やったのでとばして、ElementListSelectionDialog クラスです。run メソッドは次のようにしました。

        public void run(IAction action) {
            IWorkbench workbench = WrpePlugin.getDefault().getWorkbench();
            IWorkbenchWindow workBenchWindow = workbench.getActiveWorkbenchWindow();
            Shell shell =  workBenchWindow.getShell();
            ILabelProvider lProvider= new LabelProvider();
            ElementListSelectionDialog dialog= new ElementListSelectionDialog(shell, lProvider);
            System.out.println(dialog.open());
        }

実行すると次のようなダイアログが表示されます。これは何かのベースにすべきダイアログなのでしょう。

Dialog

次の ElementTreeSelectionDialog クラスは多分ダメだろうなと思ったのですが、やはりダメでした ^^;; NullPointerException が発生します。ツリー系はみな setInput メソッドでツリーを設定しなくてはダメのようですね。

同じように調べていったのですが、意外に NullPointerException が発生するのが多いのでは、やり方を変えようと思います。本当は Javadoc に使い方書いておいてくれればいいのですが...