2012-10-30 2 views
3

Eclipse RCP (4)를 사용하여 꼬리표 애플리케이션을 작성 중입니다. 내 메인 윈도우에서 파일의 내용을 표시하고 싶습니다. 내 첫 번째 아이디어는 SWT List 구성 요소를 사용했지만 내 문제는 내가 큰 파일 (100000 회선 이상)을 열 때 List이 처리 할 수 ​​없다는 것입니다. 어떤 구성 요소를 사용해야합니까?Eclipse RCP에서 파일의 내용을 표시하기위한 올바른 구성 요소 선택하기

일부 기준에 따라 레코드를 필터링 및/또는 강조하고 싶지만 수정하고 싶지 않으므로 읽기 전용입니다.

한 가지 더 : 메모리에 임의로 큰 파일 (예 : 10GB)을로드 할 수 없기 때문에 새 라인 문자의 위치를 ​​List에 읽고 String으로 콘크리트 선을로드합니다. 표시됩니다. 따라서 선이 보이게 될 때만 선을 렌더링하는 구성 요소가 필요합니다.

+1

도움이 될 수 있습니다. http://stackoverflow.com/a/2773698/1257372 –

+0

테이블을 필터링하려고하면 작동합니까? 예를 들어 게으른 콘텐츠 제공 업체는 작동하지 않습니다. –

+0

특히 많은 수의 항목을 표시하는 경우에는 도움이되지만 필터링을 지원하기 위해 일종의 색인 서비스와 함께 사용해야합니다. 아파치 루씬? –

답변

0

SWT.VIRTUAL을 사용하면 데이터를 느슨하게로드 할 수 있습니다. Here은 표와 SWT.VIRTUAL의 예입니다.

그러나 10GB는 많은 정보입니다. 나는 어쨌든 파일을 여러 청크로 분할하고 특정 부분을로드합니다.

[편집] : 뭔가 당신이 알아야 할 :

는 3.1로

TableViewer 지금 SWT.VIRTUAL 플래그를 지원합니다. 원본으로 사용하는 테이블이 SWT.VIRTUAL 인 경우 콘텐츠 공급자는 IStructuredContentProvider 대신 ILazyContentProvider를 구현할 수 있습니다. 이 경우 뷰어는 정렬 또는 필터링을 지원하지 않습니다. 또한이 경우 요소가 지정되지 않았거나 아직 작성되지 않은 경우 위젯 기반 API가 null을 리턴 할 수 있습니다.

SWT.VIRTUAL의 사용자는 TreeViewer가 테이블을 채울 수있는 콜백을 반드시 생성하지 않으므로 TreeViewer 내의 Table에서 getItems()를 사용하지 않아야합니다. 또한 모든 항목을 작성하여 SWT.VIRTUAL의 성능 향상을 제거하는 부작용이 있습니다.

약 700k 개 항목으로 TreeViewer를 구현하려고했습니다. 필터/검색 기능이 매우 느립니다 (필자는 FilteredTree를 사용했습니다).

+0

사용자가 10GB 파일을 열려고하는 것 같지는 않습니다. 프로그램에서 그런 종류의 상황을 처리 할 수 ​​있기를 바랍니다. –

관련 문제