org.eclipse.papyrus.uml.diagram.usecase.ui.SubjectSelectionDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.papyrus.uml.diagram.usecase.ui.SubjectSelectionDialog.java

Source

/*****************************************************************************
 * Copyright (c) 2012 CEA LIST.
 *
 *    
 * 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:
 *  CEA LIST - Initial API and implementation
 *
 *****************************************************************************/
package org.eclipse.papyrus.uml.diagram.usecase.ui;

import java.util.ArrayList;

import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.gmf.runtime.emf.type.core.IHintedType;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.papyrus.infra.emf.providers.EMFLabelProvider;
import org.eclipse.papyrus.uml.diagram.usecase.part.UMLDiagramEditorPlugin;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.uml2.uml.UMLFactory;

/**
 * This class can be launch is order to open a dialog used to choose an association
 */
public class SubjectSelectionDialog extends AbstractSubjectMetaclassesSelectionDialog {

    /** The selected association. */
    protected IHintedType selectedMetaclass;

    /** The common metaclasses. */
    ArrayList<IHintedType> subClassifierList;

    /**
     * Instantiates a new association selection dialog.
     * 
     * @param parent
     *        the parent shell
     * @param style
     *        the style
     */
    public SubjectSelectionDialog(Shell parent, ArrayList<IHintedType> executableHTypeCreation, int style) {
        super(parent, style);
        this.subClassifierList = executableHTypeCreation;
        this.selectedMetaclass = (IHintedType) subClassifierList.toArray()[0];
    }

    /**
     * @see org.eclipse.papyrus.uml.diagram.clazz.custom.ui.AbstractAssociationSelectionDialog#createContents()
     * 
     */
    protected void createContents() {
        // TODO Auto-generated method stub
        super.createContents();
        final ILabelProvider labelProvider = new EMFLabelProvider() {

            @Override
            public String getText(Object element) {
                // TODO Auto-generated method stub
                if (element instanceof IHintedType) {
                    String out = ((IHintedType) element).getDisplayName();
                    return out;
                }
                return super.getText(element);
            }

            @Override
            public Image getImage(Object element) {
                // TODO Auto-generated method stub
                final ILabelProvider labelProvider = new AdapterFactoryLabelProvider(
                        UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
                return labelProvider.getImage(UMLFactory.eINSTANCE.createClass());
            }
        };//new EMFLabelProvider();//new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
        final IStructuredContentProvider associationContentProvider = new IStructuredContentProvider() {

            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            }

            public void dispose() {
            }

            public Object[] getElements(Object inputElement) {
                return subClassifierList.toArray();
            }
        };
        final TableViewer tableViewer = new TableViewer(table);
        tableViewer.setLabelProvider(labelProvider);
        tableViewer.setContentProvider(associationContentProvider);
        tableViewer.setInput(subClassifierList);
        btnOk.addMouseListener(new MouseListener() {

            public void mouseUp(MouseEvent e) {
                ISelection selection = tableViewer.getSelection();
                if (selection instanceof IStructuredSelection) {
                    selectedMetaclass = (IHintedType) ((IStructuredSelection) selection).getFirstElement();
                    shlmetaclassSelection.close();
                }
            }

            public void mouseDown(MouseEvent e) {
            }

            public void mouseDoubleClick(MouseEvent e) {
            }
        });
        btnCancel.setVisible(false);
    }

    /**
     * Gets the selected association.
     * 
     * @return the selected association
     */
    public IHintedType getSelectedMetaclass() {
        return selectedMetaclass;
    }
}