/***************************************************************************** * Copyright (c) 2006, 2008 g-Eclipse Consortium * 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 * * Initial development of the original code was made for the * g-Eclipse project founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributors: * Christof Klausecker GUP, JKU - initial API and implementation *****************************************************************************/ package eu.geclipse.traceview.views; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.action.IMenuCreator; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import eu.geclipse.traceview.ITrace; import eu.geclipse.traceview.ITraceVisProvider; import eu.geclipse.traceview.internal.Activator; import eu.geclipse.traceview.internal.Messages; class DropDown implements IMenuCreator { TraceView view; String id; DropDown( final TraceView view, final String id ) { this.view = view; this.id = id; } public void dispose() { // TODO Auto-generated method stub } public Menu getMenu( final Control parent ) { Menu menu = new Menu( parent ); fill( menu ); return menu; } public Menu getMenu( final Menu parent ) { Menu m = new Menu( parent ); MenuItem item = new MenuItem( m, SWT.PUSH ); item.setText( Messages.getString( "DropDown.switchVisualization" ) ); //$NON-NLS-1$ return m; } void fill( final Menu menu ) { ITrace trace = this.view.getTrace(); for( final IConfigurationElement configurationElement : Platform.getExtensionRegistry() .getConfigurationElementsFor( "eu.geclipse.traceview.TraceVisualization" ) ) { //$NON-NLS-1$ try { ITraceVisProvider provider = ( ITraceVisProvider )configurationElement.createExecutableExtension( "class" ); //$NON-NLS-1$ if( provider.supports( trace ) ) { MenuItem item = new MenuItem( menu, SWT.CHECK ); item.setText( configurationElement.getAttribute( "label" ) ); //$NON-NLS-1$ item.setImage( provider.getImage() ); if( configurationElement.getAttribute( "id" ).equals( this.id ) ) { //$NON-NLS-1$ item.setSelection( true ); } item.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent e ) { DropDown.this.view.traceVisPage.changeToVisualisation( configurationElement.getAttribute( "id" ) ); //$NON-NLS-1$ } } ); } } catch( CoreException exception ) { Activator.logException( exception ); } } } }