ca.mcgill.cs.swevo.qualyzer.dialogs.RenameProjectDialog.java Source code

Java tutorial

Introduction

Here is the source code for ca.mcgill.cs.swevo.qualyzer.dialogs.RenameProjectDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2010 McGill University
 * 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:
 *     Jonathan Faubert
 *******************************************************************************/

package ca.mcgill.cs.swevo.qualyzer.dialogs;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import ca.mcgill.cs.swevo.qualyzer.model.Project;
import ca.mcgill.cs.swevo.qualyzer.model.validation.ProjectNameValidator;

/**
 *
 */
public class RenameProjectDialog extends TitleAreaDialog {
    private Project fProject;
    private String fNewName;

    private Text fNameText;

    /**
     * @param parentShell
     */
    public RenameProjectDialog(Shell parentShell, Project project) {
        super(parentShell);
        fProject = project;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#create()
     */
    @Override
    public void create() {
        super.create();
        setTitle(Messages.getString("dialogs.RenameProjectDialog.renameProject")); //$NON-NLS-1$
        setMessage(Messages.getString("dialogs.RenameProjectDialog.warning"), IMessageProvider.WARNING); //$NON-NLS-1$
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.TitleAreaDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected Control createDialogArea(Composite parent) {
        parent.setLayout(new GridLayout());

        Composite body = new Composite(parent, SWT.NULL);
        body.setLayout(new GridLayout(2, false));
        body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

        Label label = new Label(body, SWT.NULL);
        label.setText(Messages.getString("dialogs.RenameProjectDialog.newName")); //$NON-NLS-1$

        fNameText = new Text(body, SWT.BORDER);
        fNameText.setText(""); //$NON-NLS-1$
        fNameText.setLayoutData(new GridData(SWT.FILL, SWT.NULL, true, false));
        fNameText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                validate();
            }
        });

        return parent;
    }

    private void validate() {
        ProjectNameValidator validator = new ProjectNameValidator(fNameText.getText().trim(), fProject.getName(),
                fProject);
        if (validator.isValid()) {
            setErrorMessage(null);
            getButton(IDialogConstants.OK_ID).setEnabled(true);
        } else {
            setErrorMessage(validator.getErrorMessage());
            getButton(IDialogConstants.OK_ID).setEnabled(false);
        }

    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
     */
    @Override
    public void okPressed() {
        fNewName = fNameText.getText().trim();
        super.okPressed();
    }

    /**
     * @return the NewName
     */
    public String getNewName() {
        return fNewName.trim();
    }

    /**
     * Get the Text field to input a name, for use in testing.
     * @return
     */
    public Text getNameField() {
        return fNameText;
    }

}