이번 시간은 개인적으로 나중에 쓸려고 올립니다. ^^;

SWT/Jface를 이용해서 파일 리스트 표시 하는 소스입니다.

TreeViewer를 사용해서 파일리스트를 트리 표시합니다.

 

FileExplorer.java

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;
	}
}

 

[실행결과 ]

img1.png

 

소스를 보면 별게 없는데... 중요한 부분은 FileTreeContentProvider클래스 입니다.

ContentProvider뭐하는 놈인지에 대해서 알고 계시다면 어렵진 않지만 모르시면 이해가 잘 안가실겁니다.

ContentProvider에 대해서 설명을 해주고 싶지만...  뭐라고 설명 해야 알기 쉬울까????

대충 설명하면 아래와 같은 내용을 처리합니다.(처리하도록 구현)

- getElements():전체리스트

- getChildren():하위디렉토리 내용

- getParent():인수로 넘어온 부모를 반환

 

이상입니다.

감사합니다.