org.eclipse.papyrus.diagram.activity.edit.dialogs.ConfirmActivityParameterNodeAndParameterSyncDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.papyrus.diagram.activity.edit.dialogs.ConfirmActivityParameterNodeAndParameterSyncDialog.java

Source

/*****************************************************************************
 * Copyright (c) 2010 Atos Origin.
 *
 *    
 * 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:
 *   Atos Origin - Initial API and implementation
 *
 *****************************************************************************/
package org.eclipse.papyrus.diagram.activity.edit.dialogs;

import java.util.Collection;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.papyrus.diagram.activity.part.Messages;
import org.eclipse.papyrus.diagram.activity.part.UMLDiagramEditorPlugin;
import org.eclipse.papyrus.diagram.activity.preferences.IActivityPreferenceConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.uml2.uml.NamedElement;

/**
 * This class enables to open a dialog to ask the user to confirm he wants to delete activity parameter node(s) with parameter
 * 
 */
public class ConfirmActivityParameterNodeAndParameterSyncDialog extends MessageDialog {

    /**
     * Protected constructor. Use {@link #openConfirmFromParameter(Shell)} or {@link #openConfirmFromPin(Shell)}
     * 
     * @param parentShell
     *        the parent shell
     * @param dialogMessage
     *        the message
     */
    protected ConfirmActivityParameterNodeAndParameterSyncDialog(Shell parentShell, String dialogMessage) {
        super(parentShell, Messages.ConfirmActivityParameterAndParameterSync_Title, null, dialogMessage, CONFIRM,
                new String[] { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL }, 0);
    }

    /**
     * Open a confirmation dialog for the parameter deletion
     * 
     * @param parentShell
     * @param parameterNodes
     * @param labelprovider
     * @return the user confirmation
     */
    public static boolean openConfirmFromParameter(Shell parentShell,
            Collection<? extends NamedElement> parameterNodes, ILabelProvider labelprovider) {
        // consult preferences before opening the popup
        final IPreferenceStore prefStore = UMLDiagramEditorPlugin.getInstance().getPreferenceStore();
        boolean showPopup = prefStore
                .getBoolean(IActivityPreferenceConstants.PREF_CONFIRM_ACTIVITY_PARAMETER_SYNC_FROM_PARAMETER);
        if (showPopup) {
            StringBuffer parsedList = new StringBuffer();
            for (NamedElement element : parameterNodes) {
                parsedList.append(labelprovider.getText(element));
                parsedList.append(System.getProperty("line.separator"));
            }
            String message = NLS.bind(Messages.ConfirmActivityParameterAndParameterSync_FromParameterMsg,
                    parsedList.toString());
            ConfirmActivityParameterNodeAndParameterSyncDialog dialog = new ConfirmActivityParameterNodeAndParameterSyncDialog(
                    parentShell, message);
            return dialog.open() == 0;
        } else {
            return true;
        }
    }

    /**
     * Create a checkbox for not displaying the popup again
     * 
     * @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
     * 
     * @param parent
     *        parent composite
     * @return checkbox
     */
    @Override
    protected Control createCustomArea(Composite parent) {
        Button checkBox = new Button(parent, SWT.CHECK | SWT.LEFT);
        checkBox.setText(Messages.DiagramsPreferencePage_disableNotification);
        checkBox.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                if (e.getSource() instanceof Button) {
                    boolean doNotShow = ((Button) e.getSource()).getSelection();
                    final IPreferenceStore prefStore = UMLDiagramEditorPlugin.getInstance().getPreferenceStore();
                    prefStore.putValue(
                            IActivityPreferenceConstants.PREF_CONFIRM_ACTIVITY_PARAMETER_SYNC_FROM_PARAMETER,
                            Boolean.toString(!doNotShow));
                }
            }
        });
        return checkBox;
    }

}