2016-07-05 19 views
0

2つの列のテーブルがあり、第1列のチェックボックスと第2列のComboBoxCellEditorで構成されています。 ComboBoxで何かを選択すると、対応する行状態のCheckBoxがcheckedに変更されます。RCPのComboBoxCellEditor選択に基づいてチェックボックスの選択を変更します

tabViewer = new TableViewer(innerTopComp, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK); 

そしてComboBoxCellEditorのために、私はEditingSupportを拡張するクラスを作成しました。何かがコンボボックスで選択された場合、行のコンボボックスに対応するチェックボックスをチェックする方法

public class ComboEditing extends EditingSupport { 

private ComboBoxCellEditor cellEditor; 

private String[] comboDataArr; 
public ComboEditing(final TableViewer viewer, String[] ComboDataArr) { 
    super(viewer); 
    this.comboDataArr = ComboDataArr; 
    this.cellEditor = new ComboBoxCellEditor(((TableViewer)viewer).getTable(), this.comboDataArr, SWT.DROP_DOWN); 
} 

@Override 
protected CellEditor getCellEditor(Object element) { 
    // TODO Auto-generated method stub 
    return cellEditor; 
} 

@Override 
protected boolean canEdit(Object element) { 
    // TODO Auto-generated method stub 
    return true; 
} 

@Override 
protected Object getValue(Object element) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
protected void setValue(Object element, Object value) { 
    // TODO Auto-generated method stub 
    if((element instanceof TableData) && (value instanceof Integer)) { 
     Integer choice = (Integer)value; 
     String option = comboDataArr[choice]; 
     ((TableData)element).setMatches(option); 
     getViewer().update(element, null); 

    } 
} 

}

+0

は、あなただけの '' EditingSupport' setValue'方法でこれを行うことができませんか? –

+0

setValueメソッドで対応するチェックボックスをどのように取得するのですか? – user387600

+1

私はあなたが持っているものとあなたがしたいことをもっとはっきりと説明する必要があると思います。 –

答えて

0

SWT.CHECKを使用するテーブルには、チェックボックスを処理するためのさまざまな方法が用意されているため、CheckboxTableViewerを使用する必要があります。

CheckboxTableViewer tabViewer = CheckboxTableViewer.newCheckList(innerTopComp, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); 

CheckboxTableViewerので、既存のコードはまだOKとなりますTableViewerを拡張します。

次に、あなたのEditingSupportsetValue方法でsetChecked方法を使用することができます。

CheckboxTableViewer viewer = (CheckboxTableViewer)getViewer(); 

viewer.setChecked(element, ... true or false); 
関連する問題