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 Toedter - initial API and implementation *******************************************************************************/ package com.siemens.ct.mp3m.ui.views.logical; 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.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.ViewPart; import com.siemens.ct.mp3m.model.logical.Artists; import com.siemens.ct.mp3m.model.logical.ILogicalModelListener; import com.siemens.ct.mp3m.model.logical.Song; import com.siemens.ct.mp3m.ui.views.EditorFactory; import com.siemens.ct.mp3m.ui.views.PathEditorInput; /** * The logical view: Artists, Albums, Tracks + Titles * * @author Kai Toedter * @author $LastChangedBy: toedter_k $ * @version $LastChangedDate: 2009-01-07 14:13:52 +0100 (Mi, 07 Jan 2009) $ * @version $LastChangedRevision: 771 $ */ public class LogicalView extends ViewPart implements ILogicalModelListener { public static final String ID = "com.siemens.ct.mp3m.ui.views.logical.LogicalView"; //$NON-NLS-1$ // The TableTreeViewer TreeViewer treeViewer; /** * Creates the main window's contents * * @param parent * the main window * * @return Control */ protected Control createContents(Composite parent) { // Create the table viewer to display the Artists treeViewer = new TreeViewer(parent, SWT.FULL_SELECTION); treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); // Set the content and label providers treeViewer.setContentProvider(new ArtistTreeContentProvider(this)); treeViewer.setLabelProvider(new ArtistTreeLabelProvider()); treeViewer.setInput(Artists.getArtists()); String[] columnTitles = { Messages.getString("LogicalView.Artist_Album_Song"), Messages.getString("LogicalView.Track"), Messages.getString("LogicalView.Duration") }; Tree tree1 = treeViewer.getTree(); for (int i = 0; i < columnTitles.length; i++) { TreeColumn treeColumn = new TreeColumn(tree1, SWT.NONE); treeColumn.setText(columnTitles[i]); } tree1.setSortColumn(tree1.getColumn(0)); int columnCount = tree1.getColumnCount(); for (int i = 0; i < columnCount; i++) { TreeColumn treeColumn = tree1.getColumn(i); treeColumn.pack(); } tree1.setHeaderVisible(true); tree1.setLinesVisible(true); // 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); getSite().setSelectionProvider(treeViewer); return treeViewer.getTree(); } @Override public void createPartControl(Composite parent) { createContents(parent); Mp3DoubleclickListener listener = new Mp3DoubleclickListener(this); treeViewer.addDoubleClickListener(listener); Artists.addModelChangeListener(this); // getSite().getKeyBindingService().setScopes(new // String[]{"com.siemens.ct.mp3manager.mp3ManagerContext"}); // //$NON-NLS-1$ } @Override public void setFocus() { treeViewer.getControl().setFocus(); } class Mp3DoubleclickListener implements IDoubleClickListener { private final LogicalView view; /** * @param view * the logical view */ Mp3DoubleclickListener(LogicalView view) { this.view = view; } public void doubleClick(DoubleClickEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); if (selection.getFirstElement() instanceof Song) { Song title = ((Song) selection.getFirstElement()); final String fullPath = title.getFile(); if (fullPath != null) { PathEditorInput pathEditorInput = new PathEditorInput(fullPath); try { this.view.getViewSite().getWorkbenchWindow().getActivePage().openEditor(pathEditorInput, EditorFactory.getDefaultMp3EditorId()); } catch (PartInitException e) { e.printStackTrace(); } } } } } /* * (non-Javadoc) * * @see com.siemens.ct.mp3m.model.logical.ILogicalModelListener#modelChanged() */ public void modelChanged() { treeViewer.setInput(Artists.getArtists()); treeViewer.refresh(); } }