/******************************************************************************* * Copyright (c) 2006, 2007 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 * funded by European Union project number: FP6-IST-034327 * http://www.geclipse.eu/ * * Contributors: * RUR (http://acet.rdg.ac.uk/) * - Ashish Thandavan - initial API and implementation ******************************************************************************/ package eu.geclipse.workflow.ui.part; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.FeatureMap; import org.eclipse.emf.edit.provider.IWrapperItemProvider; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import eu.geclipse.workflow.ui.internal.WorkflowDiagramEditorPlugin; /** * Wizard page that allows to select element from model. * * @generated */ public class ModelElementSelectionPage extends WizardPage { /** * @generated */ protected EObject selectedModelElement; /** * @generated */ private TreeViewer modelVewer; /** * @generated */ public ModelElementSelectionPage( String pageName ) { super( pageName ); } /** * @generated */ public EObject getModelElement() { return selectedModelElement; } /** * @generated */ public void setModelElement( EObject modelElement ) { selectedModelElement = modelElement; if( modelVewer != null ) { if( selectedModelElement != null ) { modelVewer.setInput( selectedModelElement.eResource() ); modelVewer.setSelection( new StructuredSelection( selectedModelElement ) ); } else { modelVewer.setInput( null ); } setPageComplete( validatePage() ); } } /** * @generated */ public void createControl( Composite parent ) { initializeDialogUnits( parent ); Composite plate = new Composite( parent, SWT.NONE ); plate.setLayoutData( new GridData( GridData.FILL_BOTH ) ); GridLayout layout = new GridLayout(); layout.marginWidth = 0; plate.setLayout( layout ); setControl( plate ); Label label = new Label( plate, SWT.NONE ); label.setText( getSelectionTitle() ); label.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_BEGINNING ) ); modelVewer = new TreeViewer( plate, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER ); GridData layoutData = new GridData( GridData.FILL_BOTH ); layoutData.heightHint = 300; layoutData.widthHint = 300; modelVewer.getTree().setLayoutData( layoutData ); modelVewer.setContentProvider( new AdapterFactoryContentProvider( WorkflowDiagramEditorPlugin.getInstance() .getItemProvidersAdapterFactory() ) ); modelVewer.setLabelProvider( new AdapterFactoryLabelProvider( WorkflowDiagramEditorPlugin.getInstance() .getItemProvidersAdapterFactory() ) ); if( selectedModelElement != null ) { modelVewer.setInput( selectedModelElement.eResource() ); modelVewer.setSelection( new StructuredSelection( selectedModelElement ) ); } modelVewer.addSelectionChangedListener( new ISelectionChangedListener() { public void selectionChanged( SelectionChangedEvent event ) { ModelElementSelectionPage.this.updateSelection( ( IStructuredSelection )event.getSelection() ); } } ); setPageComplete( validatePage() ); } /** * Override to provide custom model element description. * * @generated */ protected String getSelectionTitle() { return "Select model element:"; //$NON-NLS-1$ } /** * @generated */ protected void updateSelection( IStructuredSelection selection ) { selectedModelElement = null; if( selection.size() == 1 ) { Object selectedElement = selection.getFirstElement(); if( selectedElement instanceof IWrapperItemProvider ) { selectedElement = ( ( IWrapperItemProvider )selectedElement ).getValue(); } if( selectedElement instanceof FeatureMap.Entry ) { selectedElement = ( ( FeatureMap.Entry )selectedElement ).getValue(); } if( selectedElement instanceof EObject ) { selectedModelElement = ( EObject )selectedElement; } } setPageComplete( validatePage() ); } /** * Override to provide specific validation of the selected model element. * * @generated */ protected boolean validatePage() { return true; } }