ac.soton.eventb.classdiagrams.diagram.part.ModelElementSelectionPage.java Source code

Java tutorial

Introduction

Here is the source code for ac.soton.eventb.classdiagrams.diagram.part.ModelElementSelectionPage.java

Source

/*
 * Copyright (c) 2012 University of Southampton.
 * 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
 */
package ac.soton.eventb.classdiagrams.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(
                ClassdiagramsDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory()));
        modelViewer.setLabelProvider(new AdapterFactoryLabelProvider(
                ClassdiagramsDiagramEditorPlugin.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;
    }

}