org.eclipse.php.formatter.ui.preferences.RenameProfileDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.php.formatter.ui.preferences.RenameProfileDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2013 Zend Techologies Ltd.
 * 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:
 *     Zend Technologies Ltd. - initial API and implementation
 *******************************************************************************/
package org.eclipse.php.formatter.ui.preferences;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.StatusDialog;
import org.eclipse.php.formatter.ui.FormatterMessages;
import org.eclipse.php.formatter.ui.preferences.ProfileManager.Profile;
import org.eclipse.php.internal.ui.util.StatusInfo;
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.*;

/**
 * The dialog to rename a new profile.
 */
public class RenameProfileDialog extends StatusDialog {

    private Label fNameLabel;
    private Text fNameText;

    private final StatusInfo fOk;
    private final StatusInfo fEmpty;
    private final StatusInfo fDuplicate;
    private final StatusInfo fNoMessage;

    private final Profile fProfile;
    private final ProfileManager fManager;
    private Profile fRenamedProfile;

    public RenameProfileDialog(Shell parentShell, Profile profile, ProfileManager manager) {
        super(parentShell);
        fManager = manager;
        setTitle(FormatterMessages.RenameProfileDialog_dialog_title);
        fProfile = profile;
        fOk = new StatusInfo();
        fDuplicate = new StatusInfo(IStatus.ERROR,
                FormatterMessages.RenameProfileDialog_status_message_profile_with_this_name_already_exists);
        fEmpty = new StatusInfo(IStatus.ERROR,
                FormatterMessages.RenameProfileDialog_status_message_profile_name_empty);
        fNoMessage = new StatusInfo(IStatus.ERROR, new String());
    }

    public Control createDialogArea(Composite parent) {

        final int numColumns = 2;

        GridLayout layout = new GridLayout();
        layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
        layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
        layout.numColumns = numColumns;

        final Composite composite = new Composite(parent, SWT.NULL);
        composite.setLayout(layout);

        // Create "Please enter a new name:" label
        GridData gd = new GridData();
        gd.horizontalSpan = numColumns;
        gd.widthHint = convertWidthInCharsToPixels(60);
        fNameLabel = new Label(composite, SWT.NONE);
        fNameLabel.setText(FormatterMessages.RenameProfileDialog_dialog_label_enter_a_new_name);
        fNameLabel.setLayoutData(gd);

        // Create text field to enter name
        gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = numColumns;
        fNameText = new Text(composite, SWT.SINGLE | SWT.BORDER);
        fNameText.setSelection(0, fProfile.getName().length());
        fNameText.setLayoutData(gd);
        fNameText.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                doValidation();
            }
        });
        fNameText.setText(fProfile.getName());
        fNameText.selectAll();

        applyDialogFont(composite);

        return composite;
    }

    /**
     * Validate the current settings.
     */
    protected void doValidation() {
        final String name = fNameText.getText().trim();

        if (name.length() == 0) {
            updateStatus(fEmpty);
            return;
        }

        if (name.equals(fProfile.getName())) {
            updateStatus(fNoMessage);
            return;
        }

        if (fManager.containsName(name)) {
            updateStatus(fDuplicate);
            return;
        }

        updateStatus(fOk);
    }

    public Profile getRenamedProfile() {
        return fRenamedProfile;
    }

    protected void okPressed() {
        if (!getStatus().isOK())
            return;
        fRenamedProfile = fProfile.rename(fNameText.getText(), fManager);
        super.okPressed();
    }
}