ext.org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage.RemoveLinkedFolderDialog.java Source code

Java tutorial

Introduction

Here is the source code for ext.org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage.RemoveLinkedFolderDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2005, 2011 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package ext.org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.eclipse.core.runtime.Assert;

import org.eclipse.core.resources.IFolder;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;

import ext.org.eclipse.jdt.internal.corext.util.Messages;
import ext.org.eclipse.jdt.internal.ui.viewsupport.BasicElementLabels;
import ext.org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
import ext.org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage.ClasspathModifierQueries.IRemoveLinkedFolderQuery;

/**
 * Dialog to prompt whether a linked folder should be deleted.
 *
 */
class RemoveLinkedFolderDialog extends MessageDialog {

    /** The remove status */
    private int fRemoveStatus = IRemoveLinkedFolderQuery.REMOVE_BUILD_PATH_AND_FOLDER;

    /** The remove build path and folder button */
    private Button fRemoveBuildPathAndFolder;

    /** The remove build path button */
    private Button fRemoveBuildPath;

    /**
     * Creates a new remove linked folder dialog.
     *
     * @param shell the parent shell to use
     * @param folder the linked folder to remove
     */
    RemoveLinkedFolderDialog(final Shell shell, final IFolder folder) {
        super(shell, NewWizardMessages.ClasspathModifierQueries_confirm_remove_linked_folder_label, null,
                Messages.format(NewWizardMessages.ClasspathModifierQueries_confirm_remove_linked_folder_message,
                        new Object[] { BasicElementLabels.getPathLabel(folder.getFullPath(), false) }),
                MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 0); // yes is the default
        Assert.isTrue(folder.isLinked());
    }

    @Override
    protected Control createCustomArea(final Composite parent) {

        final Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayout(new GridLayout());

        fRemoveBuildPathAndFolder = new Button(composite, SWT.RADIO);
        fRemoveBuildPathAndFolder.addSelectionListener(selectionListener);

        fRemoveBuildPathAndFolder.setText(NewWizardMessages.ClasspathModifierQueries_delete_linked_folder);
        fRemoveBuildPathAndFolder.setFont(parent.getFont());

        fRemoveBuildPath = new Button(composite, SWT.RADIO);
        fRemoveBuildPath.addSelectionListener(selectionListener);

        fRemoveBuildPath.setText(NewWizardMessages.ClasspathModifierQueries_do_not_delete_linked_folder);
        fRemoveBuildPath.setFont(parent.getFont());

        fRemoveBuildPathAndFolder
                .setSelection(fRemoveStatus == IRemoveLinkedFolderQuery.REMOVE_BUILD_PATH_AND_FOLDER);
        fRemoveBuildPath.setSelection(fRemoveStatus == IRemoveLinkedFolderQuery.REMOVE_BUILD_PATH);

        return composite;
    }

    private SelectionListener selectionListener = new SelectionAdapter() {

        @Override
        public final void widgetSelected(final SelectionEvent event) {
            final Button button = (Button) event.widget;
            if (button.getSelection())
                fRemoveStatus = (button == fRemoveBuildPathAndFolder)
                        ? IRemoveLinkedFolderQuery.REMOVE_BUILD_PATH_AND_FOLDER
                        : IRemoveLinkedFolderQuery.REMOVE_BUILD_PATH;
        }
    };

    /**
     * Returns the remove status.
     *
     * @return the remove status, one of IRemoveLinkedFolderQuery#REMOVE_XXX
     */
    public final int getRemoveStatus() {
        return fRemoveStatus;
    }
}