diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/ModelElementSelectionPage.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/ModelElementSelectionPage.java | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/ModelElementSelectionPage.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/ModelElementSelectionPage.java new file mode 100644 index 0000000000..279aeb423c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/ModelElementSelectionPage.java @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.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; + +/** + * Wizard page that allows to select element from model. + * @generated + */ +public class ModelElementSelectionPage extends WizardPage +{ + /** + * @generated + */ + protected EObject selectedModelElement; + + /** + * @generated + */ + private TreeViewer modelViewer; + + /** + * @generated + */ + public ModelElementSelectionPage(String pageName) + { + super(pageName); + } + + /** + * @generated + */ + public EObject getModelElement() + { + return selectedModelElement; + } + + /** + * @generated + */ + public void setModelElement(EObject modelElement) + { + selectedModelElement = modelElement; + if (modelViewer != null) + { + if (selectedModelElement != null) + { + modelViewer.setInput(selectedModelElement.eResource()); + modelViewer.setSelection(new StructuredSelection(selectedModelElement)); + } + else + { + modelViewer.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)); + + modelViewer = 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; + modelViewer.getTree().setLayoutData(layoutData); + modelViewer.setContentProvider(new AdapterFactoryContentProvider(AcoreDiagramEditorPlugin.getInstance() + .getItemProvidersAdapterFactory())); + modelViewer.setLabelProvider(new AdapterFactoryLabelProvider(AcoreDiagramEditorPlugin.getInstance() + .getItemProvidersAdapterFactory())); + if (selectedModelElement != null) + { + modelViewer.setInput(selectedModelElement.eResource()); + modelViewer.setSelection(new StructuredSelection(selectedModelElement)); + } + modelViewer.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 Messages.ModelElementSelectionPageMessage; + } + + /** + * @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; + } + +} |