0

EclipseページにCheckBoxTableを表示しようとしています。これにより、ユーザーはいくつかの項目のいずれかを選択できます。使用可能な項目はEMFモデルからのものであり、列挙型です。

コンテンツプロバイダーとラベルプロバイダーを正しく設定しましたが(私は思います)、列挙型の完全なリストを表示するために入力を設定するために何を使用するかがわかりません。

したがって、私のモデルにONE、TWO、THREEの値を持つMyEnumという列挙型があるとします。これらの3つの列挙型すべてをチェックボックスとしてユーザーに表示できるようにしたいのです。

ビューアでsetInput(...)を呼び出す必要がありますが、これらの列挙型を取得するには何を渡しますか?

4

2 に答える 2

0

単に、リテラルを取得して、次のようにコントロールに追加する必要があります。

/* Populate the Combo Box with the Literals */    
EEnum cFEnum = Package.Literals.LITERAL_ENUMERATION;
/* 
 * Add an EMPTY item value so that the user can disable the specific 
 * feature 
 */
this.cmbNames.add( EMPTY_STRING );

/*
 * Add the  Enumeration Literals to the 
 * appropriate SWT Combo widget.
 */
for (int i=0; i<cFEnum.getELiterals().size(); i++){         
  this.cmbNames.add( cFEnum.getEEnumLiteral( i ).toString() );
}
cFEnum = null;


String[] sortedTypes = this.cmbNames.getItems();
Arrays.sort( sortedTypes );
this.cmbNames.setItems( sortedTypes );    
于 2012-09-07T08:20:30.343 に答える
0

a に対しては行ったことはありませんが、 のような他のクラスの値のソースとしてCheckboxTableVieweran を設定しました。私がしたことは、のサブクラスであり、コンストラクター引数として取るカスタムを作成することでした (このクラスを呼び出します) 。コンストラクターでは、 を繰り返し処理し、それぞれの値を呼び出します。このような:EEnumStructuredViewerComboViewerIStructuredContentProviderArrayListEEnumEEnumContentProviderEEnumgetELiterals()add()getInstance()

public EEnumContentProvider(EEnum source) {
    List<EEnumLiteral> literals = source.getELiterals();
    for (EEnumLiteral aLiteral : literals) {
        add(aLiteral.getInstance());
    }
}

IStructuredContentProvider.getElements(Object)の結果を返すことで簡単に実装できますが、コンテンツは入力に基づいていないため、toArray()気にしません。静的です。IContentProvider.setInput()

EEnumContentProvider次に、ビューアのコンテンツ プロバイダとして のインスタンスを設定できます。

于 2012-06-19T15:24:26.673 に答える