Java tutorial
/******************************************************************************* * Copyright (c) 2009 Siemens AG * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Kai Tdter - initial API and implementation *******************************************************************************/ package com.siemens.ct.mp3m.ui.views.physical; import java.util.List; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.model.BaseWorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.part.ViewPart; import com.siemens.ct.mp3m.model.physical.Mp3File; import com.siemens.ct.mp3m.model.physical.MusicFolders; import com.siemens.ct.mp3m.model.physical.MusicFoldersChangeListener; import com.siemens.ct.mp3m.ui.views.AdapterFactory; import com.siemens.ct.mp3m.ui.views.EditorFactory; import com.siemens.ct.mp3m.ui.views.PathEditorInput; import com.siemens.ct.mp3m.utilities.LogUtil; public class FileSystemView extends ViewPart { public static final String ID = "com.siemens.ct.mp3m.ui.views.physical.FileSystemView"; private TreeViewer treeViewer; private IAdapterFactory adapterFactory = new AdapterFactory(); public FileSystemView() { super(); } public void createPartControl(Composite parent) { treeViewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL); getSite().setSelectionProvider(treeViewer); Platform.getAdapterManager().registerAdapters(adapterFactory, Mp3File.class); treeViewer.setLabelProvider(new WorkbenchLabelProvider()); treeViewer.setContentProvider(new BaseWorkbenchContentProvider()); treeViewer.setInput(MusicFolders.getRoot()); // Create a context menu and register it with the Workbench MenuManager menuManager = new MenuManager("FileSystemPopup"); menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); Menu menu = menuManager.createContextMenu(treeViewer.getControl()); treeViewer.getControl().setMenu(menu); getSite().registerContextMenu(menuManager, treeViewer); Mp3DoubleclickListener listener = new Mp3DoubleclickListener(); treeViewer.addDoubleClickListener(listener); MusicFolders.addChangeListener(new MusicFoldersChangeListener() { public void musicFoldersChanged(List<String> folders) { treeViewer.refresh(); } }); } public void dispose() { Platform.getAdapterManager().unregisterAdapters(adapterFactory); super.dispose(); } public void setFocus() { treeViewer.getControl().setFocus(); } class Mp3DoubleclickListener implements IDoubleClickListener { public void doubleClick(DoubleClickEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); Mp3File source = ((Mp3File) selection.getFirstElement()); final String fullPath = source.getFullPath(); if (fullPath != null) { PathEditorInput pathEditorInput = new PathEditorInput(fullPath); String editorId = EditorFactory.getDefaultMp3EditorId(); try { getViewSite().getWorkbenchWindow().getActivePage().openEditor(pathEditorInput, editorId); } catch (Exception e) { LogUtil.logError("com.siemens.ct.mp3m.ui.views.physical", "cannot open editor with id: " + editorId); } } } } }