Java tutorial
/******************************************************************************* * Copyright (C) 2015 - Amit Kumar Mondal <admin@amitinside.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.amitinside.e4.filebrowser.parts; import java.io.File; import java.net.URL; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.e4.ui.di.Focus; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; public class FileBrowserPart { private TreeViewer viewer; private Image image; @PostConstruct public void createControls(Composite parent) { createImage(); viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); viewer.setContentProvider(new ViewContentProvider()); viewer.setLabelProvider(new ViewLabelProvider()); viewer.setInput(File.listRoots()); } private void createImage() { Bundle bundle = FrameworkUtil.getBundle(ViewLabelProvider.class); URL url = FileLocator.find(bundle, new Path("icons/folder.png"), null); ImageDescriptor imageDcr = ImageDescriptor.createFromURL(url); this.image = imageDcr.createImage(); } class ViewContentProvider implements ITreeContentProvider { public void inputChanged(Viewer v, Object oldInput, Object newInput) { } @Override public void dispose() { } @Override public Object[] getElements(Object inputElement) { return (File[]) inputElement; } @Override public Object[] getChildren(Object parentElement) { File file = (File) parentElement; return file.listFiles(); } @Override public Object getParent(Object element) { File file = (File) element; return file.getParentFile(); } @Override public boolean hasChildren(Object element) { File file = (File) element; if (file.isDirectory()) { return true; } return false; } } class ViewLabelProvider extends LabelProvider { @Override public String getText(Object element) { File file = (File) element; String name = file.getName(); return name.isEmpty() ? file.getPath() : name; } public Image getImage(Object element) { File file = (File) element; if (file.isDirectory()) { return image; } return null; } } @Focus public void setFocus() { viewer.getControl().setFocus(); } @PreDestroy public void dispose() { image.dispose(); } }