はい、これは完全に可能です。Building and delivery a table editor with SWT/JFace を読むことから始めることをお勧めします。このチュートリアルには、知っておくべきことがすべて含まれています。
大まかに言えば、コンテンツ モデルの最初のアイテムをデータ アイテムとは異なるものにする必要があります。これにはフィルター値が格納されます。次に、次のように s で編集サポートをセットアップしますTableViewerColumn
(これは単なるスターターです。このコードは単独では機能しません)。
tableViewerColumn.setEditingSupport(new EditingSupport(tableViewer)
{
@Override
protected boolean canEdit(Object element) {
if(object instanceof FilterDataObject) // your model object you are using to store the filter selections
{
return true;
}
}
@Override
protected CellEditor getCellEditor(Object element)
{
final ComboBoxCellEditor editor = new ComboBoxCellEditor(table, getPossibleFilterValues(), SWT.READ_ONLY);
((CCombo)editor.getControl()).addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
IStructuredSelection sel = (IStructuredSelection)m_tableViewer.getSelection();
FilterDataObject filterValue = (FilterDataObject)sel.getFirstElement();
// .. update the filter on your TableViewer
}
});
return editor;
}
@Override
protected Object getValue(Object element)
{
if(object instanceof FilterDataObject)
{
// get the filter value
}
else
{
// get your data model's value for this column
}
}
@Override
protected void setValue(Object element, Object value)
{
if(object instanceof FilterDataObject)
{
// update your FilterDataObject
}
}
});