org.webcat.eclipse.submitter.ui.dialogs.AmbiguousProjectToSubmitDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.webcat.eclipse.submitter.ui.dialogs.AmbiguousProjectToSubmitDialog.java

Source

/*==========================================================================*\
 |  $Id: AmbiguousProjectToSubmitDialog.java,v 1.2 2010/12/06 21:08:41 aallowat Exp $
 |*-------------------------------------------------------------------------*|
 |  Copyright (C) 2006-2009 Virginia Tech
 |
 |  This file is part of Web-CAT Eclipse Plugins.
 |
 |  Web-CAT is free software; you can redistribute it and/or modify
 |  it under the terms of the GNU General Public License as published by
 |  the Free Software Foundation; either version 2 of the License, or
 |  (at your option) any later version.
 |
 |  Web-CAT is distributed in the hope that it will be useful,
 |  but WITHOUT ANY WARRANTY; without even the implied warranty of
 |  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 |  GNU General Public License for more details.
 |
 |  You should have received a copy of the GNU General Public License along
 |  with Web-CAT; if not, see <http://www.gnu.org/licenses/>.
\*==========================================================================*/

package org.webcat.eclipse.submitter.ui.dialogs;

import java.text.MessageFormat;

import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
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.webcat.eclipse.submitter.ui.i18n.Messages;

//--------------------------------------------------------------------------
/**
 * A dialog used to allow the user to choose which project should be submitted
 * in the submission wizard if the selection in the Navigator differs from the
 * project that owns the file in the currently active editor.
 *
 * @author  Tony Allevato (Virginia Tech Computer Science)
 * @author  latest changes by: $Author: aallowat $
 * @version $Revision: 1.2 $ $Date: 2010/12/06 21:08:41 $
 */
public class AmbiguousProjectToSubmitDialog extends MessageDialog {
    //~ Constructors ..........................................................

    // ----------------------------------------------------------
    /**
     * Creates a new instance of the dialog. This method is protected because
     * pre-processing must occur before the superclass constructor can be
     * called. Use the static createWithProjects method to create a new dialog
     * instead.
     * 
     * @param parentShell the shell that owns this dialog
     * @param dialogMessage the message to display in the dialog
     * @param project1 a project
     * @param project2 a project
     */
    protected AmbiguousProjectToSubmitDialog(Shell parentShell, String dialogMessage, IProject project1,
            IProject project2) {
        super(parentShell, Messages.AMBIGUOUSSELECTION_DIALOG_TITLE, null, dialogMessage, MessageDialog.INFORMATION,
                new String[] { Messages.AMBIGUOUSSELECTION_OK, Messages.AMBIGUOUSSELECTION_CANCEL }, 0);

        this.project1 = project1;
        this.project2 = project2;
    }

    //~ Methods ...............................................................

    // ----------------------------------------------------------
    /**
     * Creates a new instance of the AmbiguousProjectToSubmitDialog class.
     * 
     * @param parentShell the Shell that will own the dialog box
     * @param project1 the first project that is selected
     * @param project2 the second project that is selected
     * @return an instance of AmbiguousProjectToSubmitDialog
     */
    public static AmbiguousProjectToSubmitDialog createWithProjects(Shell parentShell, IProject project1,
            IProject project2) {
        String message = MessageFormat.format(Messages.AMBIGUOUSSELECTION_DIALOG_MESSAGE, project1.getName(),
                project2.getName());

        return new AmbiguousProjectToSubmitDialog(parentShell, message, project1, project2);
    }

    // ----------------------------------------------------------
    /**
     * Creates the radio buttons in the dialog box to allow the user to select
     * which project should be submitted.
     */
    protected Control createCustomArea(Composite parent) {
        Composite container = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        container.setLayout(layout);

        Button radio1 = new Button(container, SWT.RADIO);
        radio1.setText(MessageFormat.format(Messages.AMBIGUOUSSELECTION_OPTION_1, project1.getName()));
        radio1.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                selectedProject = project1;
            }
        });

        Button radio2 = new Button(container, SWT.RADIO);
        radio2.setText(MessageFormat.format(Messages.AMBIGUOUSSELECTION_OPTION_2, project2.getName()));
        radio2.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                selectedProject = project2;
            }
        });

        return container;
    }

    // ----------------------------------------------------------
    /**
     * Gets the project that was selected by the user after the dialog is
     * dismissed.
     * 
     * @return the project that was selected by the user
     */
    public IProject getSelectedProject() {
        return selectedProject;
    }

    //~ Static/instance variables .............................................

    /* The first project that is selected (the one in the Navigator). */
    private IProject project1;

    /* The second project that is selected (the one owning the active
       editor). */
    private IProject project2;

    /* The project that the user has selected in the dialog. */
    private IProject selectedProject;
}