--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2000, 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 org.eclipse.jdt.internal.ui.wizards.buildpaths;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+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.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.dialogs.ISelectionStatusValidator;
+import org.eclipse.ui.dialogs.NewFolderDialog;
+import org.eclipse.ui.views.navigator.ResourceComparator;
+
+import org.eclipse.jdt.internal.corext.buildpath.ClasspathModifier;
+
+import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
+import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
+import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;
+
+/**
+ */
+public class FolderSelectionDialog extends ElementTreeSelectionDialog implements ISelectionChangedListener {
+
+ private Button fNewFolderButton;
+ private IContainer fSelectedContainer;
+
+ public FolderSelectionDialog(Shell parent, ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
+ super(parent, labelProvider, contentProvider);
+ setComparator(new ResourceComparator(ResourceComparator.NAME));
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite result= (Composite)super.createDialogArea(parent);
+
+ getTreeViewer().addSelectionChangedListener(this);
+
+ Button button = new Button(result, SWT.PUSH);
+ button.setText(NewWizardMessages.FolderSelectionDialog_button);
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ newFolderButtonPressed();
+ }
+ });
+ button.setFont(parent.getFont());
+ fNewFolderButton= button;
+
+ applyDialogFont(result);
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IJavaHelpContextIds.BP_SELECT_DEFAULT_OUTPUT_FOLDER_DIALOG);
+
+ return result;
+ }
+
+ private void updateNewFolderButtonState() {
+ IStructuredSelection selection= (IStructuredSelection) getTreeViewer().getSelection();
+ fSelectedContainer= null;
+ if (selection.size() == 1) {
+ Object first= selection.getFirstElement();
+ if (first instanceof IContainer) {
+ fSelectedContainer= (IContainer) first;
+ }
+ }
+ fNewFolderButton.setEnabled(fSelectedContainer != null);
+ }
+
+ protected void newFolderButtonPressed() {
+ NewFolderDialog dialog= new NewFolderDialog(getShell(), fSelectedContainer);
+ if (dialog.open() == Window.OK) {
+ TreeViewer treeViewer= getTreeViewer();
+ treeViewer.refresh(fSelectedContainer);
+ Object createdFolder= dialog.getResult()[0];
+ treeViewer.reveal(createdFolder);
+ treeViewer.setSelection(new StructuredSelection(createdFolder));
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateNewFolderButtonState();
+ }
+
+ public IContainer generated_4751514314943986762(ISelectionStatusValidator validator, ViewerFilter filter, IResource initSelection, BuildPathsBlock buildpathsblock) {
+ setTitle(NewWizardMessages.BuildPathsBlock_ChooseOutputFolderDialog_title);
+ setValidator(validator);
+ setMessage(NewWizardMessages.BuildPathsBlock_ChooseOutputFolderDialog_description);
+ addFilter(filter);
+ setInput(buildpathsblock.fWorkspaceRoot);
+ setInitialSelection(initSelection);
+ setComparator(new ResourceComparator(ResourceComparator.NAME));
+
+ if (open() == Window.OK) {
+ return (IContainer)getFirstResult();
+ }
+ return null;
+ }
+
+ public IPath generated_5616782107357149589(ViewerFilter filter, IResource initSel, SourceAttachmentBlock sourceattachmentblock) {
+ setAllowMultiple(false);
+ addFilter(filter);
+ setTitle(NewWizardMessages.SourceAttachmentBlock_intjardialog_title);
+ setMessage(NewWizardMessages.SourceAttachmentBlock_intjardialog_message);
+ setInput(sourceattachmentblock.fWorkspaceRoot);
+ setInitialSelection(initSel);
+ if (open() == Window.OK) {
+ IResource res= (IResource) getFirstResult();
+ return res.getFullPath();
+ }
+ return null;
+ }
+
+ public IContainer generated_6645016892303741943(IWorkspaceRoot root, final Class<?>[] acceptedClasses, ViewerFilter filter, IResource initSelection, final OutputLocationDialog outputlocationdialog) {
+ setTitle(NewWizardMessages.OutputLocationDialog_ChooseOutputFolder_title);
+
+ setValidator(new ISelectionStatusValidator() {
+ ISelectionStatusValidator validator= new TypedElementSelectionValidator(acceptedClasses, false);
+ public IStatus validate(Object[] selection) {
+ IStatus typedStatus= validator.validate(selection);
+ if (!typedStatus.isOK())
+ return typedStatus;
+ if (selection[0] instanceof IFolder) {
+ IFolder folder= (IFolder) selection[0];
+ try {
+ IStatus result= ClasspathModifier.checkSetOutputLocationPrecondition(outputlocationdialog.fEntryToEdit, folder.getFullPath(), outputlocationdialog.fAllowInvalidClasspath, outputlocationdialog.fCPJavaProject);
+ if (result.getSeverity() == IStatus.ERROR)
+ return result;
+ } catch (CoreException e) {
+ JavaPlugin.log(e);
+ }
+ return new StatusInfo();
+ } else {
+ return new StatusInfo(IStatus.ERROR, ""); //$NON-NLS-1$
+ }
+ }
+ });
+ setMessage(NewWizardMessages.OutputLocationDialog_ChooseOutputFolder_description);
+ addFilter(filter);
+ setInput(root);
+ setInitialSelection(initSelection);
+ setComparator(new ResourceComparator(ResourceComparator.NAME));
+
+ if (open() == Window.OK) {
+ return (IContainer)getFirstResult();
+ }
+ return null;
+ }
+
+
+
+}