강좌 & 팁
글 수 2,412
2012.05.20 13:00:22 (*.52.177.29)
43137
이번 시간은 개인적으로 나중에 쓸려고 올립니다. ^^;
SWT/Jface를 이용해서 파일 리스트 표시 하는 소스입니다.
TreeViewer를 사용해서 파일리스트를 트리 표시합니다.
import java.io.File; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; public class FileExplorer extends ApplicationWindow { public FileExplorer() { super(null); } protected Control createContents(Composite parent) { // 트리뷰를 생성 TreeViewer treeView = new TreeViewer(parent); // 트리뷰표시를 위한 프로바이더 treeView.setContentProvider(new FileTreeContentProvider()); // 표시할 리스트 목록 treeView.setInput(new File("C:\\")); return treeView.getTree(); } /** * * @param args */ public static void main(String[] args) { FileExplorer w = new FileExplorer(); w.setBlockOnOpen(true); w.open(); Display.getCurrent().dispose(); } } class FileTreeContentProvider implements ITreeContentProvider { @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // TODO Auto-generated method stub } @Override public void dispose() { // TODO Auto-generated method stub } @Override public Object[] getElements(Object inputElement) { // TODO Auto-generated method stub return getChildren(inputElement); } @Override public Object[] getChildren(Object parentElement) { // TODO Auto-generated method stub Object[] child = ((File) parentElement).listFiles(); return child == null ? new Object[0] : child; } @Override public Object getParent(Object element) { // TODO Auto-generated method stub return ((File) element).getParent(); } @Override public boolean hasChildren(Object element) { // TODO Auto-generated method stub return getChildren(element).length > 0; } }
[실행결과 ]
소스를 보면 별게 없는데... 중요한 부분은 FileTreeContentProvider클래스 입니다.
ContentProvider뭐하는 놈인지에 대해서 알고 계시다면 어렵진 않지만 모르시면 이해가 잘 안가실겁니다.
ContentProvider에 대해서 설명을 해주고 싶지만... 뭐라고 설명 해야 알기 쉬울까????
대충 설명하면 아래와 같은 내용을 처리합니다.(처리하도록 구현)
- getElements():전체리스트
- getChildren():하위디렉토리 내용
- getParent():인수로 넘어온 부모를 반환
이상입니다.
감사합니다.