2012-05-10 7 views
1

특정 셀의 드롭 다운을 설정하기 위해 Eclipse RCP에서 몇 가지 문제에 직면하고 있습니다. 내 requrement는 테이블의 첫 번째 행에 드롭 다운을 설정하는 것입니다. 그리고 그 드롭 다운도 제거 할 수 있어야합니다. 드롭하면 테이블의 내용을 필터링 할 수 있어야합니다. 그래서 내 질문은테이블 셀에 드롭 다운 추가하기

1) 특정 셀이나 행에만 드롭 다운을 추가 할 수 있습니까? 2) 해당 필터를 테이블 필터로 사용할 수 있습니까? 3) 드롭 다운을 표 셀에 추가하면 어떻게 제거합니까?

답변

1

예 전적으로 가능합니다. Building and delivering a table editor with SWT/JFace으로 시작하는 것이 좋습니다.이 자습서에는 알아야 할 모든 것이 포함되어 있습니다.

개괄적 인 개요를 사용하면 콘텐츠 모델의 첫 번째 항목을 데이터 항목과 다르게해야합니다. 그러면 필터 값이 저장됩니다. 그런 다음처럼 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 
     } 
    }  
}); 
+0

확인을 클릭합니다. 귀중한 정보에 감사드립니다. 하지만 여전히 열 또는 특정 행에서 하나의 셀에 대해서만 드롭 다운을 추가하고 제거 할 수 있는지 알고 싶습니다. 또한 나는 당신이 제안한이 사이트를 보았습니다. 거기서 그들은 모든 컬럼에 필터를 적용하고 있습니다. – Parameswaran

+0

예, 테이블의 각 열에 대해 TableViewColumn을 작성하므로 각 열에 대해 완전히 다른 편집 지원을 가질 수 있습니다. 'canEdit' 메서드를 사용하여 셀이 드롭 다운을 보여줄지 결정하십시오. –

+0

당신은 사람들이 미래에 당신을 도울 가능성이 더 높습니다 답변을 수락하여 알아 ... –

관련 문제