blob: 96215867b41b328e95aaf2feceee34a8b48a4146 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2017 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.Assert;
import org.eclipse.dltk.internal.corext.util.Messages;
import org.eclipse.dltk.internal.ui.wizards.NewWizardMessages;
import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.IRemoveLinkedFolderQuery;
import org.eclipse.jface.dialogs.IDialogConstants;
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.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;
/**
* Dialog to prompt whether a linked folder should be deleted.
*
* @see IRemoveLinkedFolderQuery
*/
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.BuildpathModifierQueries_confirm_remove_linked_folder_label, null, Messages.format(NewWizardMessages.BuildpathModifierQueries_confirm_remove_linked_folder_message, new Object[] { folder.getFullPath()}), 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.BuildpathModifierQueries_delete_linked_folder);
fRemoveBuildPathAndFolder.setFont(parent.getFont());
fRemoveBuildPath= new Button(composite, SWT.RADIO);
fRemoveBuildPath.addSelectionListener(selectionListener);
fRemoveBuildPath.setText(NewWizardMessages.BuildpathModifierQueries_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;
}
}